0

テンプレート フィールドに CheckBoxList があります。

<asp:TemplateField HeaderText="Check Box">
        <ItemTemplate>
            <asp:CheckBoxList ID="CheckBoxList1" runat="server">
                <asp:ListItem></asp:ListItem>
            </asp:CheckBoxList>
        </ItemTemplate>
        </asp:TemplateField> 

すべてのチェックボックスがチェックされているかどうかを確認したい。すべてのチェックボックスがチェックされていない場合、先に進むことはできません。

for (int i = 0; i < GridView1.Rows.Count; i++)
    {

        GridViewRow row = GridView1.Rows[i];

        bool isChecked = ((CheckBoxList)row.FindControl("CheckBoxList1")).Checked;

        if (isChecked)

            Response.Write("Its Checked");

        else

            Response.Write("Not Check");  

    }

問題は、そうでない場合でも常に「Its Checked」を返すことです。おそらく、テンプレート ビューで CheckBoxList を使用できないためです。Checked は明らかにメソッド「CheckBoxList」のプロパティではありません

4

2 に答える 2

0

すべての項目を調べて、チェックされている項目の数を数えます。そして、その値をチェックボックスリスト内のアイテムの総数と比較します

 for (int i = 0; i < GridView1.Rows.Count; i++) {
        GridViewRow row = GridView1.Rows[i];  
        if(row.RowType == DataControlRowType.DataRow) {
            CheckBoxList CheckBoxList1= row.FindControl("CheckBoxList1")) as CheckBoxList;                 
           //CheckBoxList CheckBoxList1= row.Cells[cbCellIndex].FindControl("CheckBoxList1")) as CheckBoxList;                 
           int checkedCount = 0;
           foreach (ListItem item in CheckBoxList1.Items) {
               checkedCount += item.Selected ? 1 : 0;
            }
            if (checkedCount == CheckBoxList1.Items.Count) { 
                //all checked
            }
            else if (checkedCount == 0)
            {
               //none checked
            }
       }
  }

Enabled は、ユーザーが操作できるかどうかを示します。Enabled == false無効なチェックボックスが表示される場合

于 2013-01-23T17:47:23.170 に答える
0

CheckBoxList.SelectedItems.Count を使用して合計アイテムと比較し、すべてのアイテムが選択されているかどうかを確認する必要があります。

CheckBoxList CheckBoxList1 = ((CheckBoxList)row.FindControl("CheckBoxList1")).Enabled;    
int i = 0;
for(i = 0; i < CheckBoxList1.Items.Count; i++)
    if (!CheckBoxList1.Items[i].Checked)
        break;
if(i == CheckBoxList1.Items.Count)
     Response.Write("Its Checked");
else
     Response.Write("Not Check");  
于 2013-01-23T17:40:18.770 に答える