【问题标题】:ASP.NET Gridview: Get the PageIndex from the selected RowASP.NET Gridview:从所选行获取 PageIndex
【发布时间】:2009-10-06 14:25:39
【问题描述】:

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

【问题讨论】:

    标签: c# asp.net gridview paging


    【解决方案1】:
    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
    

    【讨论】:

    • 我也想过这个解决方案,但它根本不是最优化和优雅的。仅为此而遍历行需要大量开销。
    • @Fiur:我不确定“开销”是什么。您已经重新绑定了数据源,这意味着您拥有它。如果你有它,为什么不遍历它来找到正确的行呢?根据您自己的承认,该行可能会出现在任何地方,并且如果不搜索就无法找到它。作为说明,他的解决方案仅将该循环添加到您已经在执行的代码中,以及所需的页面变量/设置。那是+8行和1个循环。不完全是“很多开销”
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 这正是我正在做的,我可以很容易地找到该行,我的问题和我要问的问题是如何从行中获取页面索引?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-15
        • 2023-04-07
        • 2010-11-21
        • 1970-01-01
        • 2021-05-07
        • 1970-01-01
        相关资源
        最近更新 更多