代码之家  ›  专栏  ›  技术社区  ›  Fiur

ASP.NET网格视图:从所选行获取pageIndex

  •  2
  • Fiur  · 技术社区  · 15 年前

    我需要在网格视图中突出显示已编辑行的功能,因此,在网格视图的rowdatabound中,我会检查已编辑的行,并更改CSS样式。 有一个小问题,更改可能会使行显示在其他页上。 如何从行中获取页索引以跳转到该页?

    4 回复  |  直到 15 年前
        1
  •  2
  •   mangokun    15 年前
    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
  •  2
  •   artisonus    15 年前

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

    属性page index允许您获取或设置当前显示页面的索引。

        3
  •  1
  •   Emrah GOZCU    15 年前

    我将添加一个包含行号的额外列。如果您使用的是MSSQL,那么很容易

    SELECT col1, col2, ROW_NUMBER() OVER(ORDER BY col1 [DESC]) as RowNumber FROM table
    

    并在datatable.rows.select中找到与所有列值匹配的已更改行int datatable.rows(如果有唯一列,请确保可以使用该列,如果没有,则没有运气!)你可以得到不止一排,所以选择一排!如果唯一性不是很重要,那就没有任何意义)并获取row number值,该值也是使用row_number()tsql函数添加到表中的列。剩下的是数学;

    int PageNumber = PageSize < RowNumber ? ((RowNumber - 1) / PageSize) + 1 : 1;
    

    编辑:1-我假设您在每个往返页面中查询数据库 2-row_number()应该适用于Oracle和MySQL,或者具有我所知道的相等运算符…

        4
  •  0
  •   Christopher Nobles    15 年前

    在编辑所选行时,显然需要一些唯一的标识符来将更改保存回数据存储区。将该标识符保存到局部变量。然后,当您查看OnRowDataBound事件中的每一行时,将其唯一标识符与当前保存的值进行比较。如果它是一样的,你就找到了你的行。