ListView с DataPager, не работающим

Оператор + в Coq является ассоциативным слева, поэтому такие термины, как a + b + c + d, фактически скрыты в ((a + b) + c) + d. Это должно ответить, почему plus_comm не делает то, что вы ожидаете.

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

19
задан gfrizzle 24 October 2008 в 16:35
поделиться

3 ответа

Смотрите на ListViewPagedDataSource.

private ListViewPagedDataSource GetProductsAsPagedDataSource(DataView dv)
{
// Limit the results through a PagedDataSource
ListViewPagedDataSource pagedData = new ListViewPagedDataSource();
pagedData.DataSource = dv;
pagedData.MaximumRows = dv.Table.Rows.Count;
pagedData.TotalRowCount = dpTop.PageSize;

if (Request.QueryString[dpTop.QueryStringField] != null)
  pagedData.StartRowIndex = (Convert.ToInt32(Request.QueryString[dpTop.QueryStringField]) - 1) * dpTop.PageSize;
else
  pagedData.StartRowIndex = 0;

return pagedData;
}

, Хотя, у меня есть проблема при просматривании последней страницы. DataPager переходит назад к первой странице, но отображенные данные являются последней страницей.

1
ответ дан 30 November 2019 в 03:38
поделиться

Мы должны связать с данными представление списка снова в событии OnPreRender.

protected override void OnPreRender(EventArgs e)
        {
            ListView1.DataBind();
            base.OnPreRender(e);
        }

- Обновление

После работы над несколькими представлениями списка с asp.net ajax, я видел решение, которое имеет больше смысла, чем выше одного. Вы были бы обычно данные связывать Listview на методе загрузки страницы или обработчике событий нажатия кнопки и когда существует сообщение, отступают, привязка данных была бы потеряна, как описано выше в проблеме. Так, нам нужно к привязке данных снова на измененном обработчике событий свойств страницы для представления списка.

ListView_PagePropertiesChanged(object sender, EventArgs e)
{
ListView.DataSource=someDatasource;
ListView.DataBind()
}
30
ответ дан 30 November 2019 в 03:38
поделиться

Кроме того, если источник данных вашего ListView изменен (например, при отображении данных на основе параметров поиска), не забудьте сбросить пейджер каждый раз, когда источник данных обновляется. С помощью ListView это не так просто, как с помощью некоторых других элементов управления данными (например, GridView):

private void ResetListViewPager()
{
    DataPager pager = (DataPager)ListViewMembers.FindControl("DataPager1");
    if (pager != null)
    {
        CommandEventArgs commandEventArgs = new CommandEventArgs(DataControlCommands.FirstPageCommandArgument, "");
        // MAKE SURE THE INDEX IN THE NEXT LINE CORRESPONDS TO THE CORRECT FIELD IN YOUR PAGER
        NextPreviousPagerField nextPreviousPagerField = pager.Fields[0] as NextPreviousPagerField;
        if (nextPreviousPagerField != null)
        {
            nextPreviousPagerField.HandleEvent(commandEventArgs);
        }

        // THIS COMMENTED-OUT SECTION IS HOW IT WOULD BE DONE IF USING A NUMERIC PAGER RATHER THAN A NEXT/PREVIOUS PAGER
        //commandEventArgs = new CommandEventArgs("0", "");
        //NumericPagerField numericPagerField = pager.Fields[0] as NumericPagerField;
        //if (numericPagerField != null)
        //{
        //    numericPagerField.HandleEvent(commandEventArgs);
        //}
    }
}
0
ответ дан 30 November 2019 в 03:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: