0

我有一个带有文本框和复选框的 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>&nbsp;


</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 中时,这是一种享受。

我的问题是我现在有两个像这样的 DataLists -

<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

    }

我怎样才能做到这一点?

4

1 回答 1

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
}

祝你好运!

于 2013-01-21T17:15:02.757 回答