This is an ASP.Net 2.0 web app. The Item template looks like this, for reference:
<ItemTemplate> <tr> <td class='class1' align=center><a href='url'><img src='img.gif'></a></td> <td class='class1'><%# DataBinder.Eval(Container.DataItem,'field1') %></td> <td class='class1'><%# DataBinder.Eval(Container.DataItem,'field2') %></td> <td class='class1'><%# DataBinder.Eval(Container.DataItem,'field3') %></td> <td class='class1'><%# DataBinder.Eval(Container.DataItem,'field4') %></td> </tr> </ItemTemplate>
Using this in codebehind:
foreach (RepeaterItem item in rptrFollowupSummary.Items) { string val = ((DataBoundLiteralControl)item.Controls[0]).Text; Trace.Write(val); }
I produce this:
<tr> <td class='class1' align=center><a href='url'><img src='img.gif'></a></td> <td class='class1'>23</td> <td class='class1'>1/1/2000</td> <td class='class1'>-2</td> <td class='class1'>11</td> </tr>
What I need is the data from Field1 and Field4
I can’t seem to get at the data the way I would in say a DataList or a GridView, and I can’t seem to come up with anything else on Google or quickly leverage this one to do what I want. The only way I can see to get at the data is going to be using a regex to go and get it (Because a man takes what he wants. He takes it all. And I’m a man, aren’t I? Aren’t I?).
Am I on the right track (not looking for the specific regex to do this; forging that might be a followup question 😉 ), or am I missing something?
The Repeater in this case is set in stone so I can’t switch to something more elegant. Once upon a time I did something similar to what Alison Zhou suggested using DataLists, but it’s been some time (2+ years) and I just completely forgot about doing it this way. Yeesh, talk about overlooking something obvious. . .
So I did as Alison suggested and it works fine. I don’t think the viewstate is an issue here, even though this repeater can get dozens of rows. I can’t really speak to the question if doing it that way versus using the instead (but that seems like a fine solution to me otherwise). Obviously the latter is less of a viewstate footprint, but I’m not experienced enough to say when one approach might be preferrable to another without an extreme example in front of me. Alison, one question: why literals and not labels?
Euro Micelli, I was trying to avoid a return trip to the database. Since I’m still a little green relative to the rest of the development world, I admit I don’t necessarily have a good grasp of how many database trips is ‘just right’. There wouldn’t be a performance issue here (I know the app’s load enough to know this), but I suppose I was trying to avoid it out of habit, since my boss tends to emphasize fewer trips where possible.
Off the top of my head, you can try something like this:
Then, in your code behind, you can access each Literal control as follows:
This will add to your ViewState but it makes it easy to find your controls.