我有一个带有textBox和CheckBox的DataList -
<asp:DataList runat="server" ID="pTextBox" >
<ItemTemplate>
<asp:CheckBox ID="CheckBoxPN" runat="server" Checked='false' OnCheckedChanged="CheckBoxPN_CheckedChanged" AutoPostBack="true" />
<asp:TextBox ID="profileTextBox" runat="server" Text='<%# Container.DataItem.ToString() %>'></asp:TextBox>
</ItemTemplate>
</asp:DataList>
背后的代码 -
protected void CheckBoxPN_CheckedChanged(Object sender, EventArgs e)
{
CheckBox chk = (CheckBox)sender;
DataListItem item = (DataListItem)chk.NamingContainer;
TextBox txt = (TextBox)item.FindControl("profileTextBox");
string text = txt.Text;
TextBox2.Text = txt.Text;
}
当CheckBox和TextBox位于同一个DataList中时,这将成为一种享受。
我的问题是我现在有两个像这样的数据列表 -
<asp:Label ID="Label3" runat="server" Text="Exclude"></asp:Label>
<asp:DataList runat="server" ID="excludeTextBox">
<ItemTemplate>
<asp:TextBox ID="myTextBox" runat="server" Text='<%# Container.DataItem.ToString() %>'></asp:TextBox>
</ItemTemplate>
</asp:DataList>
<asp:DataList runat="server" ID="activeCheck" >
<ItemTemplate>
<asp:Label ID="Label4" runat="server" Text="Active"></asp:Label>
<asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Container.DataItem.ToString().Equals("1") %>' OnCheckedChanged="CheckBox1_CheckedChanged" AutoPostBack="true" />
</ItemTemplate>
</asp:DataList>
当我点击逻辑进入的myTextBox
时,我需要访问CheckBox1
文本值 -
protected void CheckBox1_CheckedChanged(Object sender, EventArgs e)
{
// access string value in excludeTextBox
}
我该怎么做?
答案 0 :(得分:1)
假设每个数据列表中的复选框和文本框都匹配,你会这样做与之前的方式非常相似,但不是在同一个DataListItem中查找,而是在另一个DataList中找到该项目。相同的索引,如下:
protected void CheckBox1_CheckedChanged(Object sender, EventArgs e)
{
CheckBox chk = (CheckBox)sender;
DataListItem item = (DataListItem)chk.NamingContainer;
TextBox txt = (TextBox)excludeTextBox.Items[item.ItemIndex].FindControl("myTextBox");
//--- do work here with txt
}
祝你好运!