0

下面是我的简化版gridview

目前,摘要显示在每一页上。但是客户只需要最后一页的总数。(或者更好的是每页上的“页面”总数,以及最后一页上所有页面的总数)。

非常感谢任何帮助:)

<dx:ASPxGridView ID="GrdMain" ClientInstanceName="GrdMain" runat="server" 
        KeyFieldName="AgentAccountSummaryId" Width="100%" AutoGenerateColumns="False">
    <Columns>
        <dx:GridViewDataTextColumn FieldName="Debit" VisibleIndex="6" UnboundType="Decimal">
            <FooterCellStyle ForeColor="Brown" />
            <PropertiesTextEdit DisplayFormatString="c0" />
        </dx:GridViewDataTextColumn>
    </Columns>

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

更新:这是我在代码后面(in Page_Load)中所做的一切:

GrdMain.SettingsPager.PageSize = 25;
GrdMain.ForceDataRowType(typeof(SomeTypeView));
GrdMain.DataSource = GetListOfSomeType();
GrdMain.DataBind();                

我还应该补充一点,我正在使用DevExpress GridView

4

1 回答 1

1

ASPX 页面:

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
    AutoGenerateColumns="False" DataKeyNames="id" DataSourceID="SqlDataSource1" 
    ondatabound="GridView1_DataBound" PageSize="3" ShowFooter="True">
    <Columns>
        <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" 
            ReadOnly="True" SortExpression="id" />
        <asp:BoundField DataField="fname" HeaderText="fname" SortExpression="fname" />
        <asp:BoundField DataField="vote" HeaderText="vote" SortExpression="vote" />
    </Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ProjectDB %>" 
    onselected="SqlDataSource1_Selected" SelectCommand="SELECT * FROM [tblA]" >
</asp:SqlDataSource>

后面的代码:

decimal RowCount;
protected void GridView1_DataBound(object sender, EventArgs e)
{
    int pageSize = GridView1.PageSize;
    decimal totalPages = Math.Ceiling(RowCount / pageSize);

    int TotalAllPage=0;
    int TotalPerPage=0;
    foreach (GridViewRow row in GridView1.Rows)
    {
        TotalPerPage += int.Parse( row.Cells[2].Text);
    }
    DataView dView = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
    DataTable dTable = dView.ToTable();
    foreach (DataRow item in dTable.Rows)
    {
        TotalAllPage += int.Parse(item[2].ToString());
    }

    if (GridView1.PageIndex + 1 == totalPages)
    {
        GridView1.FooterRow.Cells[2].Text = "Total all page:" + TotalAllPage;
    }
    else
    {
        GridView1.FooterRow.Cells[2].Text = "Total this page:" + TotalPerPage;
    }
}
protected void SqlDataSource1_Selected(object sender, SqlDataSourceStatusEventArgs e)
{
    RowCount = e.AffectedRows; 
}
于 2013-08-18T15:44:59.420 回答