2012-12-07 97 views
0

的oncheck改變了我有我添加一個複選框在項模板複選框處理在ASP.net

我想每個項目我選擇增加examble一些反一旦它檢查一個DataList觀點.. 我用下面的代碼來處理,但事件功能從來沒有被訪問?!

protected void selectItemCheckBox_CheckedChanged(object sender, EventArgs e) 
    {   
    int selected = 0; 
    foreach (DataListItem i in DataList1.Items) 
    { 
     CheckBox chk = (CheckBox)i.FindControl("selectItemCheckBox"); 
     if (chk.Checked) 
     { 

      selected++; 
     } 
     selectedItemCount.Text = Convert.ToString(selected); 
     }` 
    } 
+2

你做的AutoPostBack = 「真」 那個複選框? http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.checkbox.autopostback.aspx – Win

+1

可以請你張貼一些.aspx代碼。 – Mitul

+0

您是否已將事件處理程序分配給控件? '' –

回答

0

當前,您正在循環每個複選框,對於每個複選框效率低下且取決於其他代碼,可能會造成麻煩。

你最好不要單獨增加每個複選框。

...DataList... 
<ItemTemplate> 
    <asp:CheckBox id="selectItemCheckBox" runat="server" 
     AutoPostBack="True" 
     OnCheckedChanged="selectItemCheckBox_CheckedChanged" /> 
</ItemTemplate> 
...DataList... 

一箱後進行檢查,更新總只是使用發件人

protected void selectItemCheckBox_CheckedChanged(object sender, EventArgs e) 
{ 
    // Parse the total selected items from the TextBox. 
    // You may consider using a Label instead, or something non-editable like a hidden field 
    int totalChecked; 
    if (int.TryParse(selectedItemCount.Text, out totalChecked) = false) 
     totalChecked = 0; 

    // Get a reference to the CheckBox 
    CheckBox selectItemCheckBox = (CheckBox)sender; 

    // Increment the total 
    if (selectItemCheckBox.Checked == true) 
     totalChecked++; 

    // Put back in the TextBox 
    selectedItemCount.Text = totalChecked.ToString(); 
}