Установить ID предметов в повторителе
В моем aspx у меня есть повторитель, который содержит три текстовых поля:
<asp:Repeater ID="myRepeater" runat="server">
<ItemTemplate>
<asp:TextBox ID="myTextBox" runat="server"
<ItemTemplate/>
</asp:Repeater>
В моем коде есть повторитель данных, привязанный к массиву int data = new int[3];
Таким образом, моя страница отображает три текстовых поля, каждое с идентификатором myTextBox три раза. Есть ли способ установить эти идентификаторы так:
- MyTextBox1
- MyTextBox2
- MyTextBox3
1 ответ
Таким образом, моя страница отображает три текстовых поля, каждое с идентификатором myTextBox три раза.
Вы уверены, что? Похоже, вы говорите о визуализации вывода. Посмотрите на источник, и вы найдете:
<input name="myRepeater$ctl00$myTextBox" type="text" id="myRepeater_myTextBox_0" />
<input name="myRepeater$ctl01$myTextBox" type="text" id="myRepeater_myTextBox_1" />
<input name="myRepeater$ctl02$myTextBox" type="text" id="myRepeater_myTextBox_2" />
Из этого кода вы можете получить доступ к этому сгенерированному идентификатору через ClientID
имущество. Вы также можете получить доступ к отдельным элементам управления, выполнив поиск в репитере Items
имущество:
TextBox textBox2 = myRepeater.Items[1].FindControl("myTextBox");
Изменить: вы можете явно установить ClientID
для контроля. Вы должны установить его ClientIDMode
вStatic
и измените идентификатор, когда он связан с данными:
protected void Page_Load(object sender, EventArgs e)
{
myRepeater.ItemDataBound += new RepeaterItemEventHandler(myRepeater_ItemDataBound);
myRepeater.DataSource = new int[3];
myRepeater.DataBind();
}
void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
var textbox = e.Item.FindControl("myTextBox");
textbox.ClientIDMode = ClientIDMode.Static;
textbox.ID = "myTextBox" + (e.Item.ItemIndex + 1);
}
Дает этот HTML:
<input name="myRepeater$ctl01$myTextBox1" type="text" id="myTextBox1" />
<input name="myRepeater$ctl02$myTextBox2" type="text" id="myTextBox2" />
<input name="myRepeater$ctl02$myTextBox3" type="text" id="myTextBox3" />