gpt4 book ai didi

c# - 设置中继器中项目的 ID

转载 作者:太空狗 更新时间:2023-10-29 20:54:53 24 4
gpt4 key购买 nike

在我的 aspx 中,我有一个包含三个文本框的转发器:

<asp:Repeater ID="myRepeater" runat="server">
<ItemTemplate>
<asp:TextBox ID="myTextBox" runat="server"
<ItemTemplate/>
</asp:Repeater>

在我的代码隐藏中,我将中继器数据绑定(bind)到数组 int data = new int[3];

所以我的页面显示了三个文本框,每个文本框的 ID 都是 myTextBox 的 3 次。有没有办法将这些 ID 设置为:

  • MyTextBox1
  • MyTextBox2
  • MyTextBox3

最佳答案

So my page displays three textboxes, each with the ID of myTextBox three times.

你确定吗?听起来你在谈论渲染输出。查看源码你会发现:

<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 属性访问此生成的 ID。您还可以通过搜索中继器的 Items 属性来访问各个控件:

TextBox textBox2 = myRepeater.Items[1].FindControl("myTextBox");

编辑:您可以明确设置控件的ClientID。你必须设置它的 ClientIDMode to Static并在数据绑定(bind)时更改 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);
}

给出这个 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" />

关于c# - 设置中继器中项目的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14654174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com