【发布时间】:2009-10-06 14:25:39
【问题描述】:
我需要在 gridview 中突出显示已编辑行的功能,因此在 gridview 的 RowDataBound 上,我检查哪个是已编辑的行并更改 css 样式。 有一个小问题,更改可能会使该行出现在不同的页面上。 如何从行中获取 PageIndex 以跳转到该页面?
【问题讨论】:
标签: c# asp.net gridview paging
我需要在 gridview 中突出显示已编辑行的功能,因此在 gridview 的 RowDataBound 上,我检查哪个是已编辑的行并更改 css 样式。 有一个小问题,更改可能会使该行出现在不同的页面上。 如何从行中获取 PageIndex 以跳转到该页面?
【问题讨论】:
标签: c# asp.net gridview paging
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(如果您有唯一的列,请确保您可以使用它,如果没有,您就没有运气!您可以获得更多比一行 soo 选择一个!如果唯一性不是那么重要,那没有任何意义)并获取 RowNumber 值,这也是您使用 ROW_NUMBER() TSQL 函数添加到表中的列。剩下的就是数学;
int PageNumber = PageSize < RowNumber ? ((RowNumber - 1) / PageSize) + 1 : 1;
编辑:1-我假设您为页面的每次往返查询数据库 2- ROW_NUMBER() 应该适用于我相信的 Oracle 和 MySql 或者我知道的具有相等的运算符...
【讨论】:
当您编辑选定的行时,您显然需要一些唯一标识符来将您的更改保存回数据存储。将该标识符保存到局部变量中。然后,当您查看 OnRowDataBound 事件中的每一行时,将其唯一标识符与当前保存的值进行比较。如果相同,则您已找到您的行。
【讨论】: