簡體   English   中英

ASP.NET Gridview:從選定的行獲取PageIndex

[英]ASP.NET Gridview: Get the PageIndex from the selected Row

我需要在網格視圖中突出顯示已編輯行的功能,因此在網格視圖的RowDataBound上,我要檢查哪個已被編輯並更改CSS樣式。 有一個小問題,更改可能會使該行顯示在其他頁面上。 我如何從行中獲取PageIndex來跳轉到該頁面?

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

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

PageIndex屬性使您可以獲取或設置當前顯示頁面的索引。

我將添加一個額外的列,其中包含RowNumber。 如果您使用的是MSSQL,則很容易

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

並使用與所有列值匹配的DataTable.Rows.Select查找更改后的行int DataTable.Rows(如果您有唯一的列,請確保可以使用它,如果您沒有運氣,則可以得到多行)如果唯一性不那么重要,那就沒有任何意義,請選擇一個!),然后獲取RowNumber值,該值也是使用ROW_NUMBER()TSQL函數添加到表中的列。 其余的是數學;

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

編輯:1-我假設您查詢數據庫的每次往返頁面2- ROW_NUMBER()應該可以運行Oracle和MySql,我相信我或知道的運算符都...

當編輯所選行時,很明顯,您將需要一些唯一的標識符來將您的更改保存回數據存儲中。 將該標識符保存到本地變量。 然后,當您查看OnRowDataBound事件中的每一行時,請將其唯一標識符與當前保存的值進行比較。 如果相同,那么您已找到行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM