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

问题描述 投票:0回答:4

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

c# asp.net gridview pagination
4个回答
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

2
投票

看这里:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.pageindex.aspx

PageIndex 属性可让您获取或设置当前显示页面的索引。


1
投票

我将添加一个包含 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 我相信或者有我知道的等于运算符...


0
投票

当您编辑选定的行时,显然您需要一些唯一的标识符来将更改保存回数据存储。将该标识符保存到局部变量中。然后,当您查看 OnRowDataBound 事件中的每一行时,将其唯一标识符与当前保存的值进行比较。如果相同,则您已找到您的行。

© www.soinside.com 2019 - 2024. All rights reserved.