2012-12-07 2 views
0

я имел DataList вид, который я добавить флажок в пункте ШаблонCheckBox погрузо-oncheck изменилось в ASP.net

я хочу, чтобы каждый элемент я выбрать, чтобы увеличить некоторый счетчик для examble как только это проверено .. я использовал следующий код для обработки этого, но функция события никогда не обращается?!

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 = "True"? 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(); 
}