虽然展示在页面上呈现的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 } }
刚才查了下,确实不能这样遍历,那么这个思路也行不通了,你后台数据库生成的checkBox有没有什么命名规则?如果有规则,那么也是可行的
{
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();
}
你这样写不还是根据ID去找控件么?楼主的意思是这个ID是不确定的
你这样写不还是根据ID去找控件么?楼主的意思是这个ID是不确定的
查询的结果就没有个唯一建么 那他当控件的 DataKeys
,另外你也可以通过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
}
}
你这个办法dlt.FindControl("cbDelete") 这个ID是从哪里来了?
<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") %>' />
CheckBox ckb = (CheckBox)dlt.FindControl("81")都找不到
<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怎么写?