我GV里面就三个字段,一个id,name,和删除按钮,
sqldatasource是动态(pageload的时候)创建并绑定的,显示没有问题,删除的时候就有问题了
SqlDataSource1.DeleteCommand = "delete from tb where id = @id ";
在GV.RowDeleting里面的代码如下:
SqlDataSource1.DeleteParameters.Add( "id ", GV.DataKeys[e.RowIndex].Value.ToString());
SqlDataSource1.DeleteParameters.Clear();//因为用户可以随意点删除,怕参数会有问题,所以清除后重加了一次
SqlDataSource1.DeleteParameters.Add( "id ", GV.DataKeys[e.RowIndex].Value.ToString());
SqlDataSource1.Delete();
(不过这个gridview里面的数据是用户通过点另一个gv添加进来的,没有问题)
现在出现的问题是:
1、有时候点击删除的时候,删除了2条数据,我用js显示看到的是第二条数据的id,比如我删除的记录ID是3,结果把3、4(后一条)也删除了,alert出来的是4
2、就是有时候出现错误:
索引超出范围。必须为非负值并小于集合大小。
参数名: index
------解决方案--------------------------------------------------------
SqlDataSource1.DeleteParameters.Add( "id ", GV.DataKeys[e.RowIndex].Value.ToString());
SqlDataSource1.Delete();
------解决方案--------------------------------------------------------
在Page_Load里加上
if(!IsPostBack)
{
//这里就是你删除数据的代码;
}
这样子测试一下。
------解决方案--------------------------------------------------------
在Page_Load里加上
if(!IsPostBack)
{
//这里就是你删除数据的代码;
}
这样子测试一下。
楼上面那位说的。应该是出在这里问题
------解决方案--------------------------------------------------------
if(!IsPostBack)
{
操作
}
我以前也和你的问题一样。一定要加上这个才可以。
------解决方案--------------------------------------------------------
自己加一个 “删除” 按钮,点击后删除数据库中的记录,然后重新绑定GV,这样不是更好,贴一个简单例子看一下
<asp:TemplateField HeaderText= "操作 ">
<ItemTemplate>
<asp:ImageButton ID= "DeleteBtn " runat= "server " CommandName= "delete " ImageUrl= "~/Images/delete.gif " CommandArgument= ' <%# DataBinder.Eval(Container.DataItem, "UserID ") %> ' />
</ItemTemplate> </asp:TemplateField>
RowCommand事件里这样写
protected void GV_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "delete ")
{
执行删除,重新绑定
}
}
}
------解决方案--------------------------------------------------------
接分,用 e.Keys[0].ToString()