DataBinding expressions with multiple fields

  • Thread starter Thread starter Nathan Sokalski
  • Start date Start date
N

Nathan Sokalski

I have a Repeater that uses a DataSource that has multiple fields. When the
values of these fields is displayed in the Repeater, there are fields that
are used in combination with other fields as well as by themselves. For
example, there may be a firstname field that is used in combination with a
lastname field as well as by itself. Using it by itself is simple, I have
done that many times. However, is there a way to use multiple fields in a
single databinding expression (sort of like the way you do in the
String.Format() function)? I realize that I could use string manipulation
inside the <%# %>, but that could sometimes be messier than I would like. I
also realize that I could have my database query simply return firstname+'
'+lastname and return lastname, but if I could do it in the databinding
expression it would make it easier to change my page if necessary, as well
as avoiding the need to write separate stored procedures if the same data is
used for multiple pages. Does anybody know if there is a function that can
do something like this (or whether there will be in any future versions of
..NET, I am currently using 2.0)? Thanks.
 
just use a string.Format() as it works just like string.Format()

<%# string.Format("{0} {1}",
((DataRow)Container.DataItem)["FirstName"],
((DataRow)Container.DataItem)["LastName"])
%>

-- bruce (sqlwork.com)
 
Thank you, that will probably make it easier since it allows me to combine
the fields in the databinding. However, I was asking more about something
like an overload of DataBinder.Eval that looked something like the following
(I know that this is not currently an existing overload, but I wish it was):

<%# DataBinder.Eval(Container.DataItem,"{0}, {1}","lastname","firstname") %>

Notice that the parameters in this include:

Container.DataItem (the same as the existing overloads of DataBinder.Eval)
A format string
The names of the fields to use in the format string

The difference between this and what you suggested is that this only needs
to specify Container.DataItem once, rather than with every field. Basically,
this is nothing but string.Format() with an additional parameter for
Container.DataItem. I am not unhappy with what is available, but considering
how often things such as first and last names, as well as sometimes other
fields, may be combined in DataBinding, I am somewhat surprised that it does
not exist. But I thank you again for your suggestion of string.Format, I
sometimes forget that there are other functions that can be used inside <%#
%>.
--
Nathan Sokalski
(e-mail address removed)
http://www.nathansokalski.com/

bruce barker said:
just use a string.Format() as it works just like string.Format()

<%# string.Format("{0} {1}",
((DataRow)Container.DataItem)["FirstName"],
((DataRow)Container.DataItem)["LastName"])
%>

-- bruce (sqlwork.com)


Nathan said:
I have a Repeater that uses a DataSource that has multiple fields. When
the values of these fields is displayed in the Repeater, there are fields
that are used in combination with other fields as well as by themselves.
For example, there may be a firstname field that is used in combination
with a lastname field as well as by itself. Using it by itself is simple,
I have done that many times. However, is there a way to use multiple
fields in a single databinding expression (sort of like the way you do in
the String.Format() function)? I realize that I could use string
manipulation inside the <%# %>, but that could sometimes be messier than
I would like. I also realize that I could have my database query simply
return firstname+' '+lastname and return lastname, but if I could do it
in the databinding expression it would make it easier to change my page
if necessary, as well as avoiding the need to write separate stored
procedures if the same data is used for multiple pages. Does anybody know
if there is a function that can do something like this (or whether there
will be in any future versions of .NET, I am currently using 2.0)?
Thanks.
 
Back
Top