repeater里checkbox值问题
repeater用checkbox全选,repeater外的LinkButton执行删除,代码如下:[code=C#][/code] /// <summary>
///批量删除
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lbtnDel_Click(object sender, EventArgs e)
{
for (int i = 0; i < this.rptList.Items.Count; i++)
{
CheckBox cb = (CheckBox)rptList.Items[i].FindControl("cb_id");
int id = Convert.ToInt32(((Label)rptList.Items[i].FindControl("lb_id")).Text);
if (cb.Checked)
{
string str = "delete from T_News where Nid=" + id;
DbHelper.NoResultCommand(str);
}
else
{
Response.Write("没有选中文本");
}
}
PageCountBind(1, drNewsCatList.SelectedValue);
}
执行删除事件之后,发现删除不了,直接进else语句
调试发现:checkbox的值一直是false,i,id可以循环到值
进一步调试发现,当执行删除事件之前都要先执行pageload里的事件,但是pageload里面已经!IsPostBack了
求指教
[解决办法]
初步估计 你在执行删除事件时又重新将repeater 初始化了,那样checkbox 很可能复原了
[解决办法]
是你代码没写好,js也是可以的
<%@ Page Language="C#" EnableViewState="true" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server"> protected void Page_Load(object sender, EventArgs e) { xx.InputAttributes.Add("onclick", "SelectAll(this)"); System.Data.DataTable dt = new System.Data.DataTable(); if (!Page.IsPostBack) { System.Data.DataRow dr; dt.Columns.Add(new System.Data.DataColumn("Id", typeof(System.Int32))); dt.Columns.Add(new System.Data.DataColumn("Name", typeof(System.String))); for (int i = 0; i < 6; i++) { dr = dt.NewRow(); dr[0] = i; dr[1] = "【孟子E章】" + i.ToString(); dt.Rows.Add(dr); } rptList.DataSource = dt; rptList.DataBind(); } } protected void LinkButton1_Click(object sender, EventArgs e) { bool hasChecked = false; for (int i = 0; i < this.rptList.Items.Count; i++) { CheckBox cb = (CheckBox)rptList.Items[i].FindControl("cb_id"); int id = Convert.ToInt32(((Label)rptList.Items[i].FindControl("lb_id")).Text); if (cb.Checked) { Response.Write("<li> delete from T_News where Nid=" + id); hasChecked = true; //DbHelper.NoResultCommand(str); } } if (!hasChecked) { Response.Write("没有选中文本"); } else { //Response.Redirect(Request.UrlReferrer.ToString()); } }</script><script type="text/javascript"> function SelectAll(chkBox) { s = document.getElementsByTagName("input"); for (i = 0; i < s.length; i++) { if (s[i].type == "checkbox" && s[i].id && s[i].id.indexOf("cb_id") > -1) { s[i].checked = chkBox.checked; } } }</script><body> <form id="form1" runat="server"> <asp:Repeater ID="rptList" runat="server"> <ItemTemplate> <div> <asp:CheckBox ID="cb_id" runat="server" /><asp:Label ID="lb_id" runat="server" Text='<%#Eval("Id") %>'></asp:Label> <%#Eval("Name") %></div> </ItemTemplate> </asp:Repeater> <asp:CheckBox ID="xx" runat="server" Text="全选" /> <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">删除</asp:LinkButton> </form></body>