ASP.NET Gridview: получить PageIndex из выбранной строки - PullRequest
2 голосов
/ 06 октября 2009

Мне нужна функциональность для выделения отредактированной строки в виде сетки, поэтому в RowDataBound вида сетки я проверяю, какая из них была отредактирована, и изменяю стиль CSS. Существует одна небольшая проблема, изменение может привести к появлению строки на другой странице. Как мне получить PageIndex из строки, чтобы перейти на эту страницу?

Ответы [ 4 ]

2 голосов
/ 09 октября 2009

Смотрите здесь: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.pageindex.aspx

Свойство PageIndex позволяет получить или установить индекс текущей отображаемой страницы.

2 голосов
/ 07 октября 2009
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 голос
/ 14 октября 2009

Я бы добавил дополнительный столбец, содержащий RowNumber. Если вы используете MSSQL, это просто как

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

и найдите измененную строку int DataTable.Rows, используя DataTable.Rows.Select, который соответствует всем значениям столбца (если у вас есть уникальный столбец, убедитесь, что вы можете использовать его, если у вас нет удачи! Вы можете получить больше чем одна строка, выберите одну!, если уникальность не так важна, что не имеет никакого смысла), и получите значение RowNumber, которое также является столбцом, добавленным в таблицу, с помощью функции TSQL ROW_NUMBER (). А остальное - математика;

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

РЕДАКТИРОВАТЬ: 1- Я предполагаю, что вы запрашиваете базу данных для каждого туда-обратно страницы 2- ROW_NUMBER () должен работать с Oracle и MySql, я верю, или с таким же оператором, о котором я знаю ...

0 голосов
/ 14 октября 2009

Когда вы редактируете выбранную строку, вам, очевидно, понадобится некоторый уникальный идентификатор, чтобы сохранить изменения в хранилище данных. Сохраните этот идентификатор в локальной переменной. Затем, когда вы просматриваете каждую строку в событии OnRowDataBound, сравните ее уникальный идентификатор с текущим сохраненным значением. Если это то же самое, вы нашли свой ряд.

...