2

さまざまな量のチェックボックスを含むチェックボックスリストがあり、次のようなことをしています:

protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        for (int j = 0; j < CheckBoxList1.Items.Count; j++)
        {
            //LabelTest.Text = "Something"; It works here
            if (CheckBoxList1.Items[j].Selected)
            {
                //LabelTest.Text = "Something 2"; It doesn't work here
                TextBoxTest.Text = CheckBoxList1.Items[j].Text;
                LabelTest.Text = CheckBoxList1.Items[j].Value;
            }
        }
    }

チェックボックスをオンにすると、「何か」がページに表示されますが、残りは表示されません。私もそれのように私の「if」を書き込もうとしました:

if (!CheckBoxList1.Items[j].Selected)

そうすることで、ボックスをチェックすると、TextBoxTest に「106」が表示されます。これは、チェックボックスの総数ではなく、チェックボックスの数ではありません。

私の CheckBoxList1 には真の自動ポストバックがあります。

4

5 に答える 5

3

問題は、CheckBoxList にアイテムを追加する方法にあります。別のトピックでそのコードを提供しました。あなたがすべきことは、そのコードをこれで囲むことです:

if (!IsPostBack)
{
    ... your code to add items to the CheckBoxList
}

それ以外の場合は、Selected プロパティのデフォルト値 false を使用して、すべてのポストバックでリストを再作成します。

于 2012-06-01T10:24:36.287 に答える
1
protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
        foreach (ListItem item in CheckBoxList1.Items)
        {
            if (item.Selected == true)
            {
                //Response.Write(item.Value);
                LabelTest.Text = item.Value;
            }
        } 
}
于 2012-06-01T09:57:02.727 に答える
1

ページの読み込み時にチェック ボックス リスト項目を追加する場合、ページの読み込みでは次のように
なります。

private void Page_Load()
{
    if (!IsPostBack)
    {
        // load only fist time 
        LaodCheckBoxList();
    }
}

チェックボックスリストに対してautopostback trueを有効にすると、ポストバックしてすべてのリスト項目が再作成されるため、選択状態が失われます。

于 2012-06-01T09:57:47.300 に答える