我需要在 gridview 中突出显示已编辑行的功能,因此在 gridview 的 RowDataBound 上我检查哪一个是已编辑的行并更改 css 样式。 有一个小问题,更改可能会使该行显示在不同的页面上。 如何从行中获取 PageIndex 以跳转到该页面?
untested code in vb.net
*assuming there are studentid from 1 to 100 in the database
*assuming pagesize of gridview is 10
dim studentid_of_edited_row as integer = 11
dim da as new dataadapter(strquery,conn)
dim dt as new datatable
da.fill(dt)
dim desired_pageindex as integer = 0
for i as integer = 0 to dt.rows.count - 1
if dt.rows(i)("studentid") = studentid_of_edited_row then
desired_pageindex = i / gridview1.pagesize
exit for
end if
next
gridview1.pageindex = desired_pageindex
gridview1.datasource = dt
gridview1.databind
看这里:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.pageindex.aspx
PageIndex 属性可让您获取或设置当前显示页面的索引。
我将添加一个包含 RowNumber 的额外列。如果您使用 MSSQL,则很简单
SELECT col1, col2, ROW_NUMBER() OVER(ORDER BY col1 [DESC]) as RowNumber FROM table
并使用 DataTable.Rows.Select 找到与所有列值匹配的更改行 int DataTable.Rows(如果您有一个唯一的列,请确保您可以使用它,如果没有,您就不走运!您可能会得到多个row soo 选择一个!如果唯一性不太重要,则没有任何意义)并获取 RowNumber 值,该值也是您使用 ROW_NUMBER() TSQL 函数添加到表中的列。剩下的就是数学了;
int PageNumber = PageSize < RowNumber ? ((RowNumber - 1) / PageSize) + 1 : 1;
编辑:1-我假设您为页面的每次往返查询数据库 2- ROW_NUMBER() 应该适用于 Oracle 和 MySql 我相信或者有我知道的等于运算符...
当您编辑选定的行时,显然您需要一些唯一的标识符来将更改保存回数据存储。将该标识符保存到局部变量中。然后,当您查看 OnRowDataBound 事件中的每一行时,将其唯一标识符与当前保存的值进行比较。如果相同,则您已找到您的行。