ASP.NET: Управление DataPager всегда шаг позади с подкачкой страниц

Поблочное тестирование определенно стоит начальных инвестиций. Начиная с того, чтобы начинать использовать поблочное тестирование несколько лет назад, я нашел некоторую реальную выгоду:

  • регрессионное тестирование удаляет страх перед внесением изменений в код (нет ничего как теплое свечение наблюдения, что код работает или взрывается каждый раз, когда изменение внесено)
  • примеры исполняемого кода для других членов команды (и Вы за шесть месяцев..)
  • беспощадный рефакторинг - это невероятно полезно, попробуйте его!

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

25
задан Andreas Grech 2 October 2009 в 08:35
поделиться

2 ответа

Решение

Проблема связана с привязкой к событию Page_Load .

Чтобы это работало должным образом, привязка должна быть происходит в событии DataPager OnPreRender , а не в Page_Load .

Источник:

<asp:DataPager ID="ListPager" PagedControlID="MyList" runat="server" PageSize="10"
    OnPreRender="ListPager_PreRender">

<Fields>
        <asp:NumericPagerField  />
    </Fields>
</asp:DataPager>

Скрытый код:

protected void Page_Load(object sender, EventArgs e)
{
    //Binding code moved from Page_Load
    //to the ListView's PreRender event
}

protected void ListPager_PreRender(object sender, EventArgs e)
{
    MyList.DataSource = GetSomeList();
    MyList.DataBind();    
}
33
ответ дан 28 November 2019 в 21:23
поделиться

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

Прикрепившись к событию ListView PagePropertiesChanged, я смог исправить проблему разбиения на страницы без привязки к каждой предварительной визуализации пейджера данных.

ПРИМЕЧАНИЕ: Большая часть пейджера данных свойства настраиваются в файле скина, поэтому их нет в разметке.

Разметка:

<asp:DataPager ID="ListPager" runat="server" PagedControlID="MyList" />
<asp:ListView ID="MyList" runat="server">
    <% //LayoutTemplate and ItemTemplate removed for the example %>
</asp:ListView>

Отложенный код:

protected void Page_Load(object sender, EventArgs e) {
   MyList.PagePropertiesChanged += new EventHandler(MyList_PagePropertiesChanged);
}

/// <summary>
/// Handles the situation where the page properties have changed.  Rebind the data
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MyList_PagePropertiesChanged(object sender, EventArgs e) {
   MyList.DataSource = GetSomeList();
   MyList.DataBind();
}
6
ответ дан 28 November 2019 в 21:23
поделиться
Другие вопросы по тегам:

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