GridView控件删除记录时出现索引超出范围问题的解决

废话少说,直奔主题:

问题:

在下面一段代码测试时,老是在运行点击删除按钮时出现:索引超出范围,参数index

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        string id = GridView1.DataKeys[e.RowIndex].Value.ToString();
        string strCon = "server=(local);database=my51aspx;uid=sa;pwd=sa";
        SqlConnection conn = new SqlConnection(strCon);
        conn.Open();
        string strCmd = "delete from province where id="+id;
        SqlCommand cmd = new SqlCommand(strCmd,conn);
        cmd.ExecuteNonQuery();
        conn.Close();
        bing();
    }

bing()函数源码为:

protected void bing()
    {
        string strCon = "server=(local);database=my51aspx;uid=sa;pwd=sa";
        SqlConnection conn = new SqlConnection(strCon);
        conn.Open();
        string strCmd="select * from province";
       
        SqlDataAdapter da = new SqlDataAdapter(strCmd,conn);
        DataSet ds= new DataSet();
        da.Fill(ds);
        GridView1.DataSource = ds;
                GridView1.DataBind();
        conn.Close();
    }

 

 

问题原因:

 

 

没有为GridView设置主键。

 

 

 

解决办法:

在bing()函数中加上一句:

GridView1.DataKeyNames = new string[] { "id"};//设置主键(这一句最好放在GridView1.DataBind();上面)

保存代码,再次运行,一切就OK了。

转载于:https://www.cnblogs.com/zhongjie/archive/2010/01/05/1639591.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值