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