ASP.NET Gridview:从所选行获取PageIndex

时间:2009-10-06 14:25:40

标签: c# asp.net gridview paging

我需要在gridview中突出显示已编辑行的功能,因此在gridview的RowDataBound上,我检查哪一个是已编辑的那个并更改了css样式。 有一个小问题,更改可能会使行显示在不同的页面上。 如何从行中获取PageIndex以跳转到该页面?

4 个答案:

答案 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事件中的每一行时,将其唯一标识符与当前保存的值进行比较。如果它是相同的,你就找到了你的行。