///批量删除
/// </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了
求指教
16 个解决方案
#1
任何后台事件执行之前都会进pageload的,想要只在初始化使用一次就加上 !ispostback 判断
#2
初步估计 你在执行删除事件时又重新将repeater 初始化了,那样checkbox 很可能复原了
#3
PageCountBind(1, drNewsCatList.SelectedValue);
你这个地方多次使用到了吧。。估计是这里的问题。应该只需要绑定一次就可以了。
你这个地方多次使用到了吧。。估计是这里的问题。应该只需要绑定一次就可以了。
#4
你是不是又重新给repeater做databind了?
#5
没有啊,pageload里面
if(!ispostback)
{
调用数据绑定
}
下面的绑定是数据变化时重新绑定啊
#6
你需要这样
EnableViewState="true"是必须的
<%@ 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)
{
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>
<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:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">删除</asp:LinkButton>
</form>
</body>
EnableViewState="true"是必须的
<%@ 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)
{
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>
<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:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">删除</asp:LinkButton>
</form>
</body>
#7
谢谢楼上回复,你的方法还没用,不过问题暂时解决了,
把全选的js代码禁用了,然后就可以实现了,再用Js进行全选,结果JS不能用了,删除可以用了
把全选的js代码禁用了,然后就可以实现了,再用Js进行全选,结果JS不能用了,删除可以用了
#8
<%@ 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>
#9
现在想调试JS呢,结果Js死活不能调用,怎么办
#10
去掉IE选项中的禁止脚本调试,然后重启浏览器才可以
#11
好的,先谢谢
#12
还是不行,启用之后,IE看个csdn都一堆报错
刚用firefox测试了一下,跟IE一样,js全选还是不能用,刚把你js粘贴上去也不能用
刚用firefox测试了一下,跟IE一样,js全选还是不能用,刚把你js粘贴上去也不能用
#13
你的JS代码不能用啊!
http://topic.csdn.net/u/20110525/13/8cb7c16a-a05f-469b-be0c-8c98a1cfeee3.html
上面文章的JS可以用,但是明明全选了但是只能删除一个
http://topic.csdn.net/u/20110525/13/8cb7c16a-a05f-469b-be0c-8c98a1cfeee3.html
上面文章的JS可以用,但是明明全选了但是只能删除一个
#14
我的代码都是测试过的,怎么不能用了?
你是自己该的还是完全拷贝粘贴我的测试的?:
你是自己该的还是完全拷贝粘贴我的测试的?:
#15
完全拷贝的,就把Js代码以及checkbox复制的
#16
全选删除自己实现了,具体解决方法http://topic.csdn.net/u/20120613/19/14bf421d-5a86-484b-af79-ba40fff2e183.html,再次感谢大家的热心帮助
#1
任何后台事件执行之前都会进pageload的,想要只在初始化使用一次就加上 !ispostback 判断
#2
初步估计 你在执行删除事件时又重新将repeater 初始化了,那样checkbox 很可能复原了
#3
PageCountBind(1, drNewsCatList.SelectedValue);
你这个地方多次使用到了吧。。估计是这里的问题。应该只需要绑定一次就可以了。
你这个地方多次使用到了吧。。估计是这里的问题。应该只需要绑定一次就可以了。
#4
你是不是又重新给repeater做databind了?
#5
没有啊,pageload里面
if(!ispostback)
{
调用数据绑定
}
下面的绑定是数据变化时重新绑定啊
#6
你需要这样
EnableViewState="true"是必须的
<%@ 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)
{
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>
<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:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">删除</asp:LinkButton>
</form>
</body>
EnableViewState="true"是必须的
<%@ 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)
{
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>
<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:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">删除</asp:LinkButton>
</form>
</body>
#7
谢谢楼上回复,你的方法还没用,不过问题暂时解决了,
把全选的js代码禁用了,然后就可以实现了,再用Js进行全选,结果JS不能用了,删除可以用了
把全选的js代码禁用了,然后就可以实现了,再用Js进行全选,结果JS不能用了,删除可以用了
#8
<%@ 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>
#9
现在想调试JS呢,结果Js死活不能调用,怎么办
#10
去掉IE选项中的禁止脚本调试,然后重启浏览器才可以
#11
好的,先谢谢
#12
还是不行,启用之后,IE看个csdn都一堆报错
刚用firefox测试了一下,跟IE一样,js全选还是不能用,刚把你js粘贴上去也不能用
刚用firefox测试了一下,跟IE一样,js全选还是不能用,刚把你js粘贴上去也不能用
#13
你的JS代码不能用啊!
http://topic.csdn.net/u/20110525/13/8cb7c16a-a05f-469b-be0c-8c98a1cfeee3.html
上面文章的JS可以用,但是明明全选了但是只能删除一个
http://topic.csdn.net/u/20110525/13/8cb7c16a-a05f-469b-be0c-8c98a1cfeee3.html
上面文章的JS可以用,但是明明全选了但是只能删除一个
#14
我的代码都是测试过的,怎么不能用了?
你是自己该的还是完全拷贝粘贴我的测试的?:
你是自己该的还是完全拷贝粘贴我的测试的?:
#15
完全拷贝的,就把Js代码以及checkbox复制的
#16
全选删除自己实现了,具体解决方法http://topic.csdn.net/u/20120613/19/14bf421d-5a86-484b-af79-ba40fff2e183.html,再次感谢大家的热心帮助