跟踪调试一下不就知道了。
你说CheckBoxList里面有9个CheckBox,但是你的代码里面j是循环了10次的,没出错?
不知道VB.NET的自动转换功能有多强大,但是建议还是把
check = DataGrid1.Items(i).Cells(1).FindControl("check1")
修改成:
check = CType(DataGrid1.Items(i).Cells(1).FindControl("check1"),CheckBoxList)

解决方案 »

  1.   

    遍历datagrid上的checkbox
    c#代码string sql="delete from t_CarRegister where cLicense is null ";
    foreach(DataGridItem dgi in DataGrid1.Items)
    {
    CheckBox cb=(CheckBox)(dgi.Cells[0].Controls[1]);
    if (cb.Checked==true)
    {
    int i=dgi.ItemIndex;
    string License=DataGrid1.DataKeys[i].ToString();
    sql+=" or cLicense='"+License+"'";
    }
    }
      

  2.   

    不好意思,我说错了,是10个checkbox.
    我也将它转换了,但是还是这样的。我调试过,
    If check.Items(j).Selected Then
          qx += check.Items(j).Value
    End If
    中的qx += check.Items(j).Value根本就没执行,每次都跳出来了,是什么原因?
      

  3.   

    datagrid的模版列在非编辑状态下可以进行操作吗?
      

  4.   

    如果你的DropDownList是放在编辑模板中,那在非编辑状态下是不能访问的。
      

  5.   

    如果你的DropDownList是放在编辑模板中,那在非编辑状态下是不能访问的。
      

  6.   

    我是在ItemTemplate 中添加的checkboxlist.那就是说不能对它进行操作拉?
      

  7.   

    你的错误很明显
    你想遍历datagrid上的所有checkboxlist但你的代码0~9并不是在一个checkboxlist里而是每一个的CHECK1.items[0]当然不会进入循环去累加了
      

  8.   

    如果想遍历datagrid的每一行,不要用什么dv
    用DataGridItem int qx=0;
    foreach(DataGridItem dgi in DataGrid1.Items)
    {
    CheckBoxList cb=(CheckBoxList)(dgi.Cells[0].Controls[1]);
    if (cb.Items[0].Selected)
    {
    qx+=cb.Items[0].Value; }
    }
      

  9.   

    非常感谢各位,问题我解决了,不过不是循环的问题,而是在循环上面,我把DATAGRID多绑定了一道,所以无论怎么check.Items(j).Selected 都是等于false,所以才不执行这句。