2012-12-07 63 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(); 
}