-1

データベース テーブルから CheckBoxList を作成しています。要件に従って、デフォルトではすべての値をオフにする必要があります。同じことを行うコードを書いたにもかかわらず、最初の値は常にチェックされ、その理由がわかりません。コードは次のとおりです。

for (int i = CheckBoxList1.Items.Count - 1; i >= 0; i--)
    CheckBoxList1.Items.RemoveAt(i);
while (rd.Read())
{
    System.Web.UI.WebControls.ListItem item = new ListItem(Convert.ToString(rd["FullName"]), Convert.ToString(rd["ContactID"]));
    CheckBoxList1.Items.Add(item);
}
con.Close();
for (int i = CheckBoxList1.Items.Count - 1; i >= 0; i--)
    CheckBoxList1.Items[i].Selected = false;      

ページがポストバックされると、すべての値がチェックされなくなります。どんな助けや提案も大歓迎です、ありがとう。

4

6 に答える 6

0

あなたのこのセクションを変更してみてください:

 for (int i = CheckBoxList1.Items.Count - 1; i >= 0; i--)
          CheckBoxList1.Items[i].Selected = false;  

これに:

 foreach(ListItem i in CheckBoxList1.Items)
 {
     i.Selected = false;
 }
于 2012-06-19T11:57:01.607 に答える
0

これを試してください: CheckBoxList1.Items[i].Checked = false;

于 2012-06-19T08:24:09.993 に答える
0
for (int i = CheckBoxList1.Items.Count - 1; i >= 0; i--)
          CheckBoxList1.Items[i].Selected = false;

ただの考えですが; このループは本当に機能していますか?停止条件は、i が 0 より大きい場合です。これは、ループの最初から当てはまるはずです。あなたの停止条件はi = 0であるべきだと思います。

bdz が言うように、代わりに items[].checked を使用してください。

于 2012-06-19T08:26:13.723 に答える
0
foreach (int index in this.CheckedListBox1.CheckedIndices)
{
    this.CheckedListBox1.SetItemChecked(index, false);
}
于 2013-05-17T17:31:55.937 に答える
0

これはUpdatePanelが原因で発生していました。それを削除すると、コードは問題なく動作し始めました。

于 2012-06-25T06:14:33.903 に答える
0

CheckBoxList1.ClearSelection()

これは Asp.Net Framework 4.5 で動作します。他のフレームワークでは試していません

于 2013-02-21T09:18:47.987 に答える