protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
DataKey key = GridView1.DataKeys[e.RowIndex];
走这个代码时就报错 错误为 :索引超出范围。必须为非负值并小于集合大小。
参数名: index ,e.RowIndex为0,我绑定好了的啊显示好多条数据呢
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
banding();
}
}
public void banding()
{
BLL.student_BLL stu = new BLL.student_BLL();
DataTable dt= stu.studentInfo();
GridView1.DataSource = dt;
GridView1.DataBind();
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
banding();
}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
DataKey key = GridView1.DataKeys[e.RowIndex];
用的是linkbutton 删除按钮
我没看到你代码里有设置DataKey的地方。不知道页面上是否设置了。先确认DataKey是否已经设置了?
有两种情况解决
1:开启视图
2:去掉IsPostBack
最后再调试下~
这句代码 DataKey key = GridView1.DataKeys[e.RowIndex];中GridView1中的数据可能为空。
GridView将数据bind到客户端后就没有值了,应该在binding的时候将GridView的datasource保存一下。
比如保存在ViewState中,然后删除时把ViewState中的数据取出,删掉后再binding到GridView