protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        string uid = this.GridView1.DataKeys[e.RowIndex][0].ToString();//老是提示错误:索引超出范围。必须为非负值并小于集合大小。
参数名: index
        int userid = Convert.ToInt32(uid);
        clu.deluser(userid);
        Response.Write("<script language='javascript'>alert('删除成功!');</script>");
        getdata();
    }
晕啊~!这是怎么错了???

解决方案 »

  1.   

    e.RowIndex的问题吧,调试一下看GridView1.DataKeys的值
      

  2.   

    实际上,自己写数据源绑定代码不但容易出现逻辑错误(例如许多事件都不能正常地触发或者触发时控件中的值已经被刷新为错误值),而且你的数据绑定还总是在无需绑定的时候执行,这大大降低了程序运行速度。最好使用asp.net2.0支持的任何一种一种DataSourceControl,GridView本身的数据绑定以及触发事件的代码被隐藏起来你无需编程,你只需要对DataSourceControl“后边”支持的对象或者数据表编写触发逻辑。