Как заставить элемент управления ASP.NET DataPager работать в UpdatePanel? - PullRequest
3 голосов
/ 08 января 2009

У меня есть страница поиска с параметрами вверху и кнопка поиска с результатами внизу. Вся вещь обернута в панели обновления внутри главной страницы. После нажатия кнопки поиска отображается первая страница. Однако, если вы нажмете следующую кнопку на DataPager, она не покажет вторую страницу. Не показывает результатов для второй страницы. Любая помощь будет принята с благодарностью.

Ответы [ 5 ]

3 голосов
/ 14 апреля 2009

Я думаю, у Ника правильная идея. Похоже, вы выполняете поиск и заполняете свой ListView в методе OnClick для кнопки поиска. Вам необходимо выполнить поиск (или, предпочтительно, кэшировать данные в первый раз) и связать его с ListView для каждой новой страницы, запрашиваемой с помощью DataPager.

Вы можете сделать это довольно легко, создав метод для события OnViewPerPropertiesChanged в ListView. Выполните поиск (или извлеките из кэша) и привяжите ListView в этом событии OnPagePropertiesChanged, и ваши данные должны заполниться. Ваш код C # может выглядеть так:

protected void SearchButton_OnClick(object sender, EventArgs e)
{
    PerformSearch();
}

protected void PerformSearch()
{
    // ...Get your data.... //

    ListView1.DataSource = data;
    ListView1.DataBind();
}

protected void ListView1_OnPagePropertiesChanged(object sender, EventArgs e)
{
    PerformSearch();
}
1 голос
/ 19 марта 2009

Похоже, ваш элемент управления не является обязательным в обратной передаче, в каком событии вы выполняете DataBind (), и находится ли он под

if(!IsPostBack) { }

какая-то обертка?

0 голосов
/ 02 декабря 2009

У меня была похожая проблема при использовании DataPager в элементе управления данными, где EnableViewState=false.

0 голосов
/ 06 февраля 2009

В нижней части панели обновления сделайте следующее:

       <Triggers>
                                <asp:PostBackTrigger ControlID="DataPager1" />
                            </Triggers>
                    </asp:UpdatePanel>
0 голосов
/ 08 января 2009

Убедитесь, что событие изменения страницы зарегистрировано в диспетчере сценариев, поскольку оно находится вне панели управления обновлением. ScriptManager.RegisterAsyncPostBackControl (элемент управления DatePager);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...