当前位置:编程学习 > C#/ASP.NET >>

sql语句变化之后,gridview的当前行还能取得原来的行索引吗?

我做了一个搜索页面:  select_str.aspx

    前台放了  gridview1   , 几个textbox 和 dropdownlist  用来接收不同的字段值
    
    点击  “搜索”  按钮  ,执行 protected void  btn_seek_Click (object sender, EventArgs e) 函数

    函数内部通过  request.form[...] 接收字段值 ,然后产生 不同的  sql 语句 ( where 子句 跟着字段的变化而变化)

    最后得到sql语句后 ,从数据库读数据 ,并作为gridview 的绑定数据源。

    
    到这里,只是搜索的话,不会出错,但是 , 在搜索的基础上, 再点击 “编辑” , 就会搞错gridview的行索引 !
    
    比如  s_id             name             age                telnum                           teacher
           8          Q9         28         13828288888               卢老师
    这一行数据, 在page_load 里 的一开始的 gridview 中是第 6 行  rowindex == 5 
   
    但是,我如果搜索  teacher = '卢老师' 后, 这一行数据出现在 gridview中的第2行(此时只显示teacher = '卢老

    师' ) 的数据 , 那么我在这一行数据上  点击   “编辑”   , 在调试时发现 
    
        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            
            GridView1.EditIndex = e.NewEditIndex;   // 就是在这里出问题的
            GetDate(); 
        }
      中的  EditIndex 已经变成 1 了(因为此时是第二行数据)
     
      接着执行,那么点击“编辑”之后的效果就是 以gridview 原来的数据行中的第2行 作为了编辑行, 根本就不是我想

      要编辑的这行数据。  

      请问,这个问题该如何解决?

     
      
    --------------------编程问答-------------------- EditIndex 索引应该从0开始吧,第二行不就是 1 吗 --------------------编程问答-------------------- 是啊,是1 。 但是1只是重新搜索后的index 啊, 我在点击 “编辑” 的时候 ,执行的是
  protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
  {
    
  GridView1.EditIndex = e.NewEditIndex; // 就是在这里出问题的
  GetDate();  
  }
      这里EditIndex = 1 把编辑行 设置成了 之前 page_load 中的 gridview中的第二行,而不是我真正想要编辑的行 。 怎么办? --------------------编程问答--------------------    哪位给点建议 --------------------编程问答-------------------- 问题描述太长了让人看不清楚, gridview索引从0开始的

0 表示第一行
1 表示第二行
.
.
.
注意这一点,自己多下两个断点调试一下,应该没什么问题
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,