Доступ к текстовым полям в Repeater Control
Все способы, которые я могу придумать, кажутся очень хакерскими. Какой правильный способ сделать это или, по крайней мере, наиболее распространенный?
Я извлекаю набор изображений из запроса LINQ-to-SQL и связываю его и некоторые другие данные с повторителем. Мне нужно добавить текстовое поле для каждого элемента в повторителе, который позволит пользователю изменять заголовок каждого изображения, очень похоже на Flickr.
Как получить доступ к текстовым полям в элементе управления повторителем и узнать, к какому изображению относится это текстовое поле?
Вот как будет выглядеть элемент управления повторителем с кнопкой отправки, которая обновит все строки изображения в Linq-to-SQL:
альтернативный текст http://casonclagg.com/layout.jpg
Редактировать:
Этот код работает
Просто убедитесь, что вы не сдуете свои ценности, связывая их, если (! Page.IsPostBack), как я ...
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<div class="itemBox">
<div class="imgclass">
<a title='<%# Eval("Name") %>' href='<%# Eval("Path") %>' rel="gallery">
<img alt='<%# Eval("Name") %>' src='<%# Eval("Path") %>' width="260" />
</a>
</div>
<asp:TextBox ID="TextBox1" Width="230px" runat="server"></asp:TextBox>
</div>
</ItemTemplate>
</asp:Repeater>
И нажмите кнопку Отправить:
protected void Button1_Click(object sender, EventArgs e)
{
foreach (RepeaterItem item in Repeater1.Items)
{
TextBox txtName = (TextBox)item.FindControl("TextBox1");
if (txtName != null)
{
string val = txtName.Text;
//do something with val
}
}
}