1

次の提案に感謝します: CBL_categ という名前のチェックボックス リストがあり、20 項目以上あります。そこからいくつかの項目を選択し、以下のコード ブロックをボタンの押下に関連付けます。最終的な合計は常にゼロです。なんで?

protected void FButton_Click(object sender, EventArgs e)
        {
            int sum=0;

            for (int i = 1; i < 20; i++)
            {
                if (CBL_categ.Items[i].Selected)
                    sum = sum + 1;
            }
            statusLabel.Text += " " + sum;

        }
4

2 に答える 2

3

あなたが提供したコードは使用しません。そのリストには常に20 個の項目があると想定しています。これにより、範囲外のエラーが発生したり、すべての項目がカウントされないなどの原因になる可能性があります。私は次のようなものを使用します:

protected void FButton_Click(object sender, EventArgs e)
    {
        int sum=0;

        foreach(ListItem item in CBL_categ.Items)
        {
          if(item.Selected){
             sum++;
          }             
        }

        statusLabel.Text += " " + sum;

    }

実際にこのメソッドに到達する前に、ListBox を再バインドしているように聞こえます。たとえば、Page_Load メソッドが次のようになっているとします。

 protected void Page_Load(object sender, EventArgs e)
 {
      //This gets called before your event on postback and will erase your selected items.
      BindListBox();
 }

それは理にかなっていますか?

編集:

Page_Load がそのように見える場合は、次のように変更して問題を修正します。

 protected void Page_Load(object sender, EventArgs e)
 {
      if(!Page.IsPostBack){
           BindListBox();
      }
 }
于 2012-06-12T20:04:05.223 に答える
1

チェックボックスのリストに入力するときは、ページがポストバックされていないかどうかも確認してください。つまり、page_load で if(!Page.IsPostBack){populate your list} のようなものを確認してください。

于 2012-06-12T20:01:30.173 に答える