Say I have a ListView control with a TextBox control in the ItemTemplate:
<asp:ListView ID="aspectsAndRatings" runat="server">
<LayoutTemplate>
<ul>
<asp:PlaceHolder ID="itemPlaceholder" runat="ser开发者_如何学Pythonver" />
</ul>
</LayoutTemplate>
<ItemTemplate>
<li>
<asp:TextBox ID="rating" runat="server" />
</li>
</ItemTemplate>
</asp:ListView>
When this form gets posted (by clicking the Submit button) I want to extract the values that have been entered into the text-boxes.
I could, of course, just do the following:
Request.Form["ctl00$MainContent$aspectsAndRatings$ctrl0$rating"]
But I'm sure ASP.NET provides a cleaner way to get the values entered, for each row of the ListView. I just can't remember what it is.
(I did try listView.Items[n].FindControl("rating"), but it returns the textbox with an empty value, rather than the value the user entered.)
You should be able to get values using the code below in a postback handler. Just rememeber not to re-bind your repeater at the page load event.
foreach (var item in aspectsAndRatings.Items)
{
TextBox textBox = item.FindControl("rating") as TextBox;
if (textBox != null)
{
string textValue = textBox.Text;
}
}
精彩评论