首页 新闻 搜索 专区 学院

GridView 问题 ?

0
悬赏园豆:10 [已解决问题] 解决于 2010-11-03 16:51

    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 删除按钮

问题补充: int a = e.RowIndex; Response.Write(a); 0,1,2 点删除显示的
程海的主页 程海 | 初学一级 | 园豆:11
提问于:2010-11-03 14:37
< >
分享
最佳答案
0

我没看到你代码里有设置DataKey的地方。不知道页面上是否设置了。先确认DataKey是否已经设置了?

收获园豆:10
茂茂 | 老鸟四级 |园豆:2860 | 2010-11-03 15:50
其他回答(2)
0

有两种情况解决

1:开启视图

2:去掉IsPostBack

最后再调试下~

路过秋天 | 园豆:4763 (老鸟四级) | 2010-11-03 14:42
不行啊
支持(0) 反对(0) 程海 | 园豆:11 (初学一级) | 2010-11-03 14:49
0

这句代码 DataKey key = GridView1.DataKeys[e.RowIndex];中GridView1中的数据可能为空。

GridView将数据bind到客户端后就没有值了,应该在binding的时候将GridView的datasource保存一下。

比如保存在ViewState中,然后删除时把ViewState中的数据取出,删掉后再binding到GridView

wang_yb | 园豆:3277 (老鸟四级) | 2010-11-03 15:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册