private void DataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string id=this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
SqlConnection conn=new SqlConnection("server=.;database=jijunwu;uid=sa;pwd=;");
if(this.DataGrid1.CurrentPageIndex>0&&this.DataGrid1.CurrentPageIndex==this.DataGrid1.PageCount-1&&this.DataGrid1.Items.Count==1)
{
this.DataGrid1.CurrentPageIndex--;
}
SqlCommand cmd=new SqlCommand("delete from jjw_news where newsid="+id,conn);
conn.Open();
int i=cmd.ExecuteNonQuery();
if(i==1)
{
Response.Write("<Script>alert('删除成功!')</Script>");
}
dg();//从新绑定数据
}
if(this.DataGrid1.CurrentPageIndex>0&&this.DataGrid1.CurrentPageIndex==this.DataGrid1.PageCount-1&&this.DataGrid1.Items.Count==1)
{
this.DataGrid1.CurrentPageIndex--;
}
///不知道1楼的对不对,,我没有那样写过,不过看起1楼的代码很有逻辑性
if(this.DataGrid1.CurrentPageIndex>0&&this.DataGrid1.CurrentPageIndex==this.DataGrid1.PageCount-1&&this.DataGrid1.Items.Count==1)
{
this.DataGrid1.CurrentPageIndex--;
}
建议你写在delete时间下面
获取行id='"+Gridview1.DataKeys[e.RowIndex].Value.Tostring()+"'
xxx.bind();
哦,你删除是根据这个来删的.
当删除时
int i = Convert.ToInt32(e.CommandArgument);
string id = this.GridView1.DataKeys[i].Value.ToString();
i实际上已经大于你的实际DataItemIndex值了,有可能越界.
第一种:
简单地在rowdeleting方法里用
e.RowIndex第二种:
((GridViewRow)((Button)e.CommandSource).NamingContainer).RowIndex
用第二种方法可以..第二种方法通用,而第一种方法只有在onrowdeleting方法事件里才有ROWINDEX参数.