2013-01-16 36 views
3

我在asp.net創建一個DataList -使用複選框和TextBox在DataList控件

<asp:DataList runat="server" ID="pTextBox"> 

<ItemTemplate> 

<asp:CheckBox ID="CheckBoxPN" runat="server" Checked='false' /> 
<asp:TextBox ID="profileTextBox" runat="server" Text='<%# Container.DataItem.ToString() %>'></asp:TextBox>&nbsp; 


</ItemTemplate> 
</asp:DataList> 

這將創建基於從web服務通過的字符串值複選框和文本框。

如何獲得profileTextBox文本字符串值,當用戶單擊CheckBoxPN並在頁面上用字符串值填充另一個文本框?

+0

「我怎樣才能得到」...哪裏?客戶端或服務器端? – freefaller

+0

將字符串值傳遞給DataList中的另一個文本框,我應該提到這一點。現在編輯。 – Ebikeneser

回答

2

您可以使用CheckedChanged事件CheckBox和鑄造它的NamingContainerDataListItem時,你只需要使用FindControl找到一個不同的服務器控件:

protected void CheckBoxPN_CheckedChanged(Object sender, EventArgs e) 
{ 
    CheckBox chk = (CheckBox) sender; 
    DataListItem item = (DataListItem) chk.NamingContainer; 
    TextBox txt = (TextBox) item.FindControl("profileTextBox"); 
    this.OtherTextBoxOnPage.Text = txt.Text; // here we are 
} 

順便說一句,這種方法適用於任何web-databound控制(Repeater,GridView等)

+0

我試過你的解決方案,並將此tto添加到aspx - 但是,如果我設置在調試時「CheckBoxPN_CheckedChanged」上的斷點,當我在它上設置一個斷點並且未檢索到該值時,它沒有進入事件? – Ebikeneser

+0

@Jambo:我假設你錯誤地將DataList數據綁定在回發上。只需在第一次加載時執行此操作。所以這可能會解決它在'Page_Load':'if(!IsPostBack){DataBindDataList();}' –

+0

它會出現你是一個英雄。繁榮!完成!非常感激。 – Ebikeneser