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();