0

Item Templateにチェックボックスを追加する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);
        }`
     }
4

1 に答える 1

1

現在、チェックされているチェックボックスごとにすべてのチェックボックスをループしていますが、これは非効率的であり、他のコードによっては問題が発生する可能性があります。

各チェックボックスを個別にインクリメントすることをお勧めします。

...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();
}
于 2012-12-07T16:45:42.147 に答える