foreach(Checkbox  chk in CondimentDataList.Items(iCtr))
{
    if(chk.checked==true)
   {
     XXX
   }
}

解决方案 »

  1.   

    CondimentDataList.Items(iCtr)是DataListItem类型,不是COLLECTION类型.
      

  2.   

    CondimentDataList.Items(iCtr)是DataListItem类型,不是COLLECTION类型.
    刚才查了下,确实不能这样遍历,那么这个思路也行不通了,你后台数据库生成的checkBox有没有什么命名规则?如果有规则,那么也是可行的
      

  3.   

     protected void btnDelete_Click1(object sender, EventArgs e)
        {
            for (int i = 0; i <= dlstProType.Items.Count - 1; i++)
            {            CheckBox cbox = (CheckBox)dlstProType.Items[i].FindControl("CheckBox1");
                if (cbox.Checked == true)
                {                int id = Convert.ToInt32(dlstProType.DataKeys[i]);
                    RJobType rjobtype = new RJobType();
                    rjobtype.Delete(id);
                    ijob.Delete("U_Resume", id, "TalentType");
                    ijob.Delete("C_Job", id, "TypeID");
                }
            }        Bind();
        }
      

  4.   


    你这样写不还是根据ID去找控件么?楼主的意思是这个ID是不确定的
      

  5.   


    你这样写不还是根据ID去找控件么?楼主的意思是这个ID是不确定的
    查询的结果就没有个唯一建么  那他当控件的 DataKeys
      

  6.   

      CheckBox cbox = (CheckBox)dlstProType.Items[i].FindControl("CheckBox1"); 好像是哦
      

  7.   

    虽然展示在页面上呈现的ID被解析的不一致,但是在后台可以通过如下的方式来找到控件
    ,另外你也可以通过JS来获取,不过牵涉到JS+AJAX与后台的交互
    foreach (DataListItem dlt in DataList1.Items)  //循环取出DataList里的每一项
    {
            //用DataListItem的FindControl方法找到CheckBox,参数为CheckBox的ID,返回为Control类型,将其转换成CheckBox
            CheckBox ckb = (CheckBox)dlt.FindControl("cbDelete"); 
            if (ckb.Checked)  //判断CheckBox是否选中
        {
                    int id = Convert.ToInt32(DataList1.DataKeys[dlt.ItemIndex]);  //取出DataList该项的主键,用于数据库删除操作
            PostOperate po = new PostOperate();  //实例化封装的数据操作类
            flag = po.Delete(id);  //执行类中的Delete方法删除数据,删除成功则返回True,如果没有删除数据,flag为false
            }
    }
      

  8.   


    你这个办法dlt.FindControl("cbDelete")  这个ID是从哪里来了?
      

  9.   

    现在关键的问题是怎么遍历DataList1里面所有的控件,
      

  10.   

    不能遍历,我之前查资料也只有FindControl的方式,因此上面回答说看你后台生成的checkbox是否有命名规则
      

  11.   

    因为之前我是用 <asp:CheckBox ID="chkSelect" CssClass="regular-checkbox"  runat="server" />
                                            <asp:Label ID="lblCondimentName" CssClass="txtcondimentname"  Text='<%# Eval("CondimentName") %>' runat="server" />
    来写的,但是CSS样式太难看了,所有我改成
    <input type="checkbox" id='<%# Eval("CondimentID") %>' class="regular-checkbox big-checkbox" runat="server"  /><label for='<%# Eval("CondimentID") %>' />   
      

  12.   

    <input type="checkbox" id='<%# Eval("CondimentID") %>' class="regular-checkbox big-checkbox" runat="server"  /><label for='<%# Eval("CondimentID") %>' />通过生成的ID好像在后台也不能找的到
    CheckBox ckb = (CheckBox)dlt.FindControl("81")都找不到
      

  13.   


    <input type="checkbox" id="chkSelect" class="regular-checkbox big-checkbox" runat="server"  /><label runat="server" for="chkSelect"  ></label>
                                            <asp:Label ID="lblCondimentName" CssClass="txtcondimentname"  Text='<%# Eval("CondimentName") %>' runat="server" />
    我现在改成这个,通过chkSelect能找的到控件,但是<label runat="server" for="chkSelect"  ></label>
    for="chkSelect"  要改成CondimentDataList_chkSelect_0 ---100这个在显示的时候JAVASCRIPT怎么写?