Rhs*_*Rhs 6 c# asp.net repeater
在我的aspx中,我有一个包含三个文本框的转发器:
<asp:Repeater ID="myRepeater" runat="server">
<ItemTemplate>
<asp:TextBox ID="myTextBox" runat="server"
<ItemTemplate/>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)
在我的代码隐藏中,我将转发器数据绑定到一个数组 int data = new int[3];
所以我的页面显示三个文本框,每个文本框的myTextBox ID为三次.有没有办法将这些ID设置为:
gil*_*ly3 16
所以我的页面显示三个文本框,每个文本框的myTextBox ID为三次.
你确定吗?听起来你在谈论渲染输出.查看来源,您会发现:
<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" />
Run Code Online (Sandbox Code Playgroud)
从后面的代码中,您可以通过ClientID
属性访问此生成的ID .您还可以通过搜索转发器的Items
属性来访问各个控件:
TextBox textBox2 = myRepeater.Items[1].FindControl("myTextBox");
Run Code Online (Sandbox Code Playgroud)
编辑:您可以显式设置ClientID
控件.您必须将其设置ClientIDMode
为Static
并在数据绑定时更改ID:
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);
}
Run Code Online (Sandbox Code Playgroud)
给出这个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" />
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16129 次 |
最近记录: |