Asp.net 在网格的最后一页中显示页脚行总数的gridview

Asp.net 在网格的最后一页中显示页脚行总数的gridview,asp.net,Asp.net,从上面的代码中,我得到了网格视图中每个页面的总数。我需要在网格视图页脚的末尾显示所有页面的总计,而不是每个页面的总计。立即帮助。 提前感谢您Noddy,但您可以在if条件下再尝试一次检查 protected void inderGrid_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) {

从上面的代码中,我得到了网格视图中每个页面的总数。我需要在网格视图页脚的末尾显示所有页面的总计,而不是每个页面的总计。立即帮助。
提前感谢您

Noddy,但您可以在if条件下再尝试一次检查

protected void inderGrid_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            decimal rowTotal = Convert.ToDecimal
            (DataBinder.Eval(e.Row.DataItem, "DC_No_Decimal"));
            //grdTotal = grdTotal + rowTotal;
            grdTotal += rowTotal;
        }
        if (e.Row.RowType == DataControlRowType.Footer)
        {
            Label lbl = (Label)e.Row.FindControl("lblTotal");
            e.Row.Cells[3].Text = grdTotal.ToString("c");
            //lbl.Text = grdTotal.ToString("c");
        }       
    }
//试试这个

if(e.Row.RowType == DataControlRowType.Footer && inderGrid.PageCount == inderGrid.PageIndex + 1)
{
 //code here.
}
if(e.Row.RowType==DataControlRowType.Footer&&inderGrid.PageCount==inderGrid.PageIndex+1)
{
对于(int i=0;i
Noddy,但您可以在if条件下再尝试一次检查

protected void inderGrid_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            decimal rowTotal = Convert.ToDecimal
            (DataBinder.Eval(e.Row.DataItem, "DC_No_Decimal"));
            //grdTotal = grdTotal + rowTotal;
            grdTotal += rowTotal;
        }
        if (e.Row.RowType == DataControlRowType.Footer)
        {
            Label lbl = (Label)e.Row.FindControl("lblTotal");
            e.Row.Cells[3].Text = grdTotal.ToString("c");
            //lbl.Text = grdTotal.ToString("c");
        }       
    }
//试试这个

if(e.Row.RowType == DataControlRowType.Footer && inderGrid.PageCount == inderGrid.PageIndex + 1)
{
 //code here.
}
if(e.Row.RowType==DataControlRowType.Footer&&inderGrid.PageCount==inderGrid.PageIndex+1)
{
对于(int i=0;i
如果您试图显示记录摘要,请查看这一个关于

如果您试图显示记录摘要,请查看这一个关于

我所做的是在代码后面设置以下内容(这只是一个示例列):

然后在ASPX页面中,我将以下模板字段放入:

int totalCallsTaken = 0;

public int CallsTaken(int value)
{
    totalCallsTaken += value;
    return value;
}

public int CallsTakenTotal()
{
    return totalCallsTaken;
}


我希望这能有所帮助,Ian。

我所做的是在代码隐藏中设置以下内容(这只是一个示例列):

然后在ASPX页面中,我将以下模板字段放入:

int totalCallsTaken = 0;

public int CallsTaken(int value)
{
    totalCallsTaken += value;
    return value;
}

public int CallsTakenTotal()
{
    return totalCallsTaken;
}


伊恩,我希望这能有所帮助。

如果你想计算所有页面的总数,并且页脚只出现在最后一页上,那么你就无法计算总数

目前,您正在gridview上的每一行中循环。如果使用分页,gridview将不会显示所有行,因此总数将不正确

您是使用
PagedDataSource
进行分页,还是限制从SQL等返回的记录?如果您使用的是
数据集
页面数据源
,则可以从数据集中找到总数(因为这将包含所有记录)。否则,您必须创建第二个查询来计算总数


然后,在显示页脚中的值方面,您必须在
ItemDataBound
事件中添加
IF
语句,以便仅在最后一页显示此值。

如果您希望所有页面的总数,并且页脚仅显示在最后一页上,那么你就无法计算出你目前的总数

目前,您正在gridview上的每一行中循环。如果使用分页,gridview将不会显示所有行,因此总数将不正确

您是使用
PagedDataSource
进行分页,还是限制从SQL等返回的记录?如果您使用的是
数据集
页面数据源
,则可以从数据集中找到总数(因为这将包含所有记录)。否则,您必须创建第二个查询来计算总数


然后,在页脚中显示值时,您必须在
ItemDataBound
事件中添加
IF
语句,以仅在最后一页时显示该值。

为了确定我的理解,您说的是您有一个包含100项的网格,但在任何给定时间都只显示25项。然后,您希望页脚仅显示页面上显示的25个项目的总和

这里有几个选项可以供您选择:

1) 在呈现页面后,使用JavaScript计算总数

2) 使用智能SQL只返回要在网格上显示的特定行,然后保持网格不变


3) 计算代码中的可见行,并仅在需要时添加它们。请记住,您在代码中知道您使用的是哪个Grid.PageIndex,以及每个页面有多少项。有了这些知识,您应该能够通过行索引确定是否将任何给定的datarow呈现到屏幕上

为了确定我的理解,你说你有一个包含100个项目的网格,但在任何给定的时间只有25个项目显示出来。然后,您希望页脚仅显示页面上显示的25个项目的总和

这里有几个选项可以供您选择:

1) 在呈现页面后,使用JavaScript计算总数

2) 使用智能SQL只返回要在网格上显示的特定行,然后保持网格不变


3) 计算代码中的可见行,并仅在需要时添加它们。请记住,您在代码中知道您使用的是哪个Grid.PageIndex,以及每个页面有多少项。有了这些知识,您应该能够通过行索引确定是否将任何给定的datarow呈现到屏幕上

您需要使用实际数据生成所有记录合计

如果您在数据源(数据库)端进行分页,那么在数据源端有total—您可以使用返回一个充满记录的页面的同一个SP来返回所有记录的总数。如果要检索所有记录并在web服务器端进行分页,则可以使用检索数据源进行合计

从优化的角度来看,您可以计算一次总数并将其存储在视图状态。

如果希望在最后一行显示页脚,则可以使用-仅在最后一页将其设置为true。

您需要使用实际数据生成所有记录合计

如果你在做p
using System.Linq;

dt.AsEnumerable().Select(x => x.Field<decimal>("DC_No_Decimal")).Sum().ToString();

you can use the code like this for get sum at the footer 

gv.DataSource = dt;

gv.Columns[2].FooterText = dt.Rows.Count > 0 ? dt.AsEnumerable().Select(x => x.Field<decimal>("DC_No_Decimal")).Sum().ToString() : "";

gv.DataBind();