2013-01-21 101 views
0

我有一个DataList的一个文本框和CheckBox -访问字符串值

<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和文本框都在相同的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 

    } 

哪有我这样做?

回答

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 
} 

祝你好运!

+0

作品一种享受,好人@Ricketts – Ebikeneser