我需要在gridview中突出显示已编辑行的功能,因此在gridview的RowDataBound上,我检查哪一个是已编辑的那个并更改了css样式。 有一个小问题,更改可能会使行显示在不同的页面上。 如何从行中获取PageIndex以跳转到该页面?
答案 0 :(得分:2)
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
答案 1 :(得分:2)
请看这里:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.pageindex.aspx
属性PageIndex允许您获取或设置当前显示页面的索引。
答案 2 :(得分:1)
我会添加一个包含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我相信或具有我所知道的相同的运算符...
答案 3 :(得分:0)
当您编辑所选行时,您显然需要一些唯一标识符来将更改保存回数据存储。将该标识符保存到本地变量。然后,当您查看OnRowDataBound事件中的每一行时,将其唯一标识符与当前保存的值进行比较。如果它是相同的,你就找到了你的行。