2013-08-19 5 views
0

Я использую DevExpress GridView. Мне нужно показывать только итоги на последней странице. Итак, мне нужно проверить, grid.PageIndex == grid.PageCount. Но PageIndex настроен на неуместные случайные числа (по крайней мере, я не нашел никакой логики), и я не знаю, чего не хватает в моем коде.Значение Devexpress GridView.PageIndex неверно

<dx:ASPxGridView ID="GrdMain" ClientInstanceName="GrdMain" runat="server" 
     KeyFieldName="SomeId" Width="100%" AutoGenerateColumns="False"> 
<Columns> 
    <dx:GridViewDataTextColumn FieldName="Debit" VisibleIndex="6" UnboundType="Decimal"> 
    </dx:GridViewDataTextColumn> 
</Columns> 

<Settings ShowFooter="True" /> 
<TotalSummary> 
    <dx:ASPxSummaryItem FieldName="Debit" SummaryType="Sum"/> 
</TotalSummary> 

И код позади:

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      grid.SettingsPager.PageSize = 25; 
      grid.ForceDataRowType(typeof(SomeTypeView)); 
     } 
     SetGridDataSource(); 
    } 

    private void SetGridDataSource() 
    { 
     grid.DataSource = GetListOfSomeType(); 
     grid.DataBind(); 
     grid.Settings.ShowFooter = (grid.PageIndex == grid.PageCount - 1); 
    } 

ответ

0

Это, как я исправил проблему, но до сих пор не знаю, почему grid.PageIndex содержали случайные значения в коде выше.

private void SetGridDataSource() 
    {       
     grid.DataSource = GetListOfSomeType(); 
     grid.DataBind(); 

     grid.PageIndexChanged += new EventHandler(grid_PageIndexChanged); 
    } 

    void grid_PageIndexChanged(object sender, EventArgs e) 
    { 
     grid.Settings.ShowFooter = (grid.PageIndex == grid.PageCount - 1); 
    }