Контроль доступа к gridview при использовании подкачки - PullRequest
2 голосов
/ 12 августа 2011

Я пытаюсь получить информацию при обратной передаче с помощью флажка в виде сетки, содержащей несколько страниц.Все работает хорошо, если данные содержат только одну страницу, но флажки подкачки всегда возвращают значение false независимо от того, на какой странице вы находитесь, если переходите на другие страницы.Например, в моем приложении я щелкнул ссылку на странице 2 и установил флажок на этой странице, а затем опубликовал ее.В моем обработчике я перебираю каждую строку и проверяю вот так.

 For Each row In grdView.Rows
         Dim RowCheckBox As CheckBox = CType(row.FindControl(crtl), CheckBox)
        If RowCheckBox.Checked Then
            sSelectedItem = CType(row.FindControl(sIDFieldName), TextBox).Text
            checkedItems.Add(sSelectedItem)
        End If
 Next

Итак, информация, которую я хочу, находится в 1-й строке на странице 2 (строка 6).Но ни один из флажков не сообщает о проверке.Вот что сообщает мой сеточный обзор:

? grdView.Rows.Count 5 
? grdView.PageCount 2 
? grdView.PageSize 5

Так что, хотя он знает, что на странице 5 страниц и 2 страницы, он не видит более 5 строк.Он также сообщает индекс страницы как 0 (1-я страница). Если я установлю PageIndex на 1 (вторая страница), то grdView.Rows.Count = 5, хотя на второй странице есть только 1 строка.

Я также получаю то же возвращаемое значение, что и на первой странице, несмотря на то, что для номера страницы указана вторая страница.Я не могу понять, как получить что-либо на странице, отличной от первой.

Я гуглил это и на удивление не нашел ответа, так как это кажется чем-то, что обычно используется для получения данных.Это репост неотвеченного вопроса в разделе C #, но я подумал, что, возможно, ответ можно найти с новым сообщением.

Я посмотрел на поля флажков и обнаружил проблемы с нумерацией.Например, на странице 2 есть одна строка, и флажок имеет идентификатор .... $ ctl02 $ ... Но когда вы запрашиваете флажок в цикле, он дает его UniqueID как .... $ ctl11 $ ...Очевидно, что они возвращают ложное.Но если вы делаете Request.Item с идентификатором, который отображается на странице, вы получаете флажок.С уникальным идентификатором флажок плюется обратно, вы ничего не получаете, и, следовательно, все проверенные свойства флажков ложны.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 12 августа 2011

Когда вы изначально устанавливали данные для GridView, вы, вероятно, делали что-то вроде этого:

grid.DataSource = something
grid.DataBind()

Когда вы привязываете данные, текущая страница данных привязана к сетке, ничего более.Если вы хотите получить доступ к данным с другой страницы, вам нужно сбросить источник данных и заново связать данные.

Простое установление текущей страницы на 2 не поможет, потому что данные на второй странице никогда не были связаныв сетку.

...