结合HiddenField遍历DataList
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结合HiddenField遍历DataList相关的知识,希望对你有一定的参考价值。
aspx页面部分代码
<input id="cbxItem" runat="server" type="checkbox" />
<asp:HiddenField ID="hdnNewsID" runat="server" Value='<%#Eval("Card_id")%>' />
cs代码
htmlInputCheckBox cbxItem = null;
HiddenField hdnNewsID = null;
foreach (DataListItem item in this.dlInfo.Items)
try
cbxItem = item.FindControl("cbxItem") as HtmlInputCheckBox;
hdnNewsID = item.FindControl("hdnNewsID") as HiddenField;
if (cbxItem.Checked)
int Card_id = Convert.ToInt32(hdnNewsID.Value);
crs.DelCard(Card_id);
else
Response.Write("<script>location='CardList.aspx'</script>");
catch
Response.Write("<script>alert('error!');location='CardList.aspx'</script>");
Response.Write("<script language=javascript>alert('删除成功!')</script>");
dlBind();
无法捕捉到选中的 checkbox 直接跳转到了CardList.aspx页面 怎么回事
PagedDataSource ps = new PagedDataSource();
ps.DataSource = crs.FindFettle(Card_fettle).Tables[0].DefaultView; 绑定用这个做的是否跟视图有关
上面的是删除事件处理部分的代码 我是通过foreach (DataListItem item in this.dlInfo.Items)遍历DataList的
hdnNewsID = item.FindControl("hdnNewsID") as HiddenField;可以获取到值
cbxItem = item.FindControl("cbxItem") as HtmlInputCheckBox; 这个地方获取不到选中的选项
假设你的DataList里面一共有三项,你选中的是第二个复选框,当遍历DataList的时候,由于第一个CheckBox不是选中的,就直接执行else里的跳转了
2. catch处理的也不好
catch
Response.Write("<script>alert('error!');location='CardList.aspx'</script>");
这里最好看看实际的异常,看下具体的错误(因为也可能是cbxItem 或者hdnNewsID 为null,也可能是 Convert.ToInt32转换不成功)
catch(Exception ex)
Response.Write(ex.Message);
参考技术A 你能调试吗,用iis调试吗
DataList中对CheckBox的遍历问题
string num = "";
foreach (DataListItem item in DataList1.Items)
System.Web.UI.WebControls.CheckBox chkExport;
chkExport = (CheckBox)item.FindControl("CheckBox1");
if (chkExport.Checked.Equals(true))
num += chkExport.Text;
else
num += "/";
//num += chkExport.Text;
//num += "*";
lblShow.Text += num;
页面回发,chkExport.Checked全是假。。。
以上是关于结合HiddenField遍历DataList的主要内容,如果未能解决你的问题,请参考以下文章