如何实现gridview合并footer列,求总计?

ovictor2009 2009-06-11 11:11:23
需求是这样的:
我的gridview是接收前一页的参数来动态显示的,也就是说gridview的列是不确定的。我想在gridview中建个footer行,不管我的gridview是多少列,footer行只显示为一列(即合并footer列),并在footer行中对gridview求总计(即gridview总的行数)。
如何实现呢?
PS:我是用C#语言进行程序编写的。
...全文
1259 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
elvafans_hehe 2011-09-05
  • 打赏
  • 举报
回复
最后这招,高
qianzhuanbuqiong 2010-08-24
  • 打赏
  • 举报
回复
if (e.Row.RowType == DataControlRowType.Footer)
{
TableCell cell = new TableCell();
cell.ColumnSpan = e.Row.Cells.Count;
cell.Text = "总计:条数";(这里可以随便写,相当于已将单元格合并了)
cell.HorizontalAlign = HorizontalAlign.Right;
e.Row.Cells.Clear();
e.Row.Cells.Add(cell);
}
kldx5092 2009-06-12
  • 打赏
  • 举报
回复
在gridview后面加以列
沉序员 2009-06-12
  • 打赏
  • 举报
回复
其實你们的答案应该LZ知道的。

他可能是要把最下面的所有FOOTER 合并为一ROW(行),然后在最右边显示他要的结果。

如果用E。ROW。CELLS[第几列)。TEXT 这个并没有合并。

我觉得LZ可能是想这样的
koukoujiayi 2009-06-12
  • 打赏
  • 举报
回复
合并footer有点困难,但做到楼主的效果还是可以的!!
把你的总计放到最后一列!!
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Footer)
{
TableCellCollection cells = e.Row.Cells;
for (int i = 0; i < cells.Count; i++)
cells[i].CssClass = "你的css";//消除边框,设置背景色

cells[cells.Count-1].Text="总计:"+你的变量
cells[cells.Count - 1].Wrap = false;
}
}
银狐被占用 2009-06-12
  • 打赏
  • 举报
回复
摘自GRIDVIEW72变

private double sum = 0;//取指定列的数据和,你要根据具体情况对待可能你要处理的是int
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{

if (e.Row.RowIndex >= 0)
{
sum += Convert.ToDouble(e.Row.Cells[6].Text);
}
else if (e.Row.RowType == DataControlRowType.Footer)
{
e.Row.Cells[5].Text = "总薪水为:";
e.Row.Cells[6].Text = sum.ToString();
e.Row.Cells[3].Text = "平均薪水为:";
e.Row.Cells[4].Text = ((int)(sum / GridView1.Rows.Count)).ToString();

}
}
outou 2009-06-12
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 qq196260188 的回复:]
不怎么用gridview,不够灵活,,用reperter写一个改改一个,,多爽啊,,够灵活,,随心所欲
[/Quote]
这个也不错,8楼的方法也可以使用
qq196260188 2009-06-12
  • 打赏
  • 举报
回复
不怎么用gridview,不够灵活,,用reperter写一个改改一个,,多爽啊,,够灵活,,随心所欲
mailche 2009-06-12
  • 打赏
  • 举报
回复
学习学习!
ojekleen 2009-06-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 kevin_xu4365 的回复:]
protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Footer )
{
e.Row.Cells[0].Text = "合计:";
e.Row.Cells[4].ColumnSpan=4;
//把其他列隐藏就行了!
}
}
[/Quote]
这方面可行,如果你是绑定数据集合计,可以从数据集里面sum
如果是当前页总计,只有绑定数据后再循环gridview获取数据再相加,或者sum数据集的top多少。
seamanhy 2009-06-12
  • 打赏
  • 举报
回复
排楼上的。
ovictor2009 2009-06-12
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 zhang_delphi 的回复:]
其實你们的答案应该LZ知道的。

他可能是要把最下面的所有FOOTER 合并为一ROW(行),然后在最右边显示他要的结果。

如果用E。ROW。CELLS[第几列)。TEXT 这个并没有合并。

我觉得LZ可能是想这样的
[/Quote]

太对了,看来你是看懂了我的需求。呵呵~~
那请问具体怎么实现呢?麻烦指教,谢谢!
kevin_xu4365 2009-06-12
  • 打赏
  • 举报
回复
protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Footer )
{
e.Row.Cells[0].Text = "合计:";
e.Row.Cells[4].ColumnSpan=4;
//把其他列隐藏就行了!
}
}
szldk 2009-06-12
  • 打赏
  • 举报
回复
关注
ovictor2009 2009-06-12
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 koukoujiayi 的回复:]
合并footer有点困难,但做到楼主的效果还是可以的!!
把你的总计放到最后一列!!
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Footer)
{
TableCellCollection cells = e.Row.Cells;
for (int i = 0; i < cells.Count; i++)
cells[i].CssClass = "你的css";//消除边…
[/Quote]

谢谢你,我根据你的代码稍微修改了一下,得到了我想要的总计,但还是没有进行合并footer。望指教。谢谢!
我的修改如下:
if (e.Row.RowType == DataControlRowType.Footer)
{
TableCellCollection cells = e.Row.Cells;
for (int i = 0; i < cells.Count; i++)
cells[cells.Count - 1].Text = "总计:"+this.GridView1.Rows.Count+"条";
cells[cells.Count - 1].Wrap = false;
}
shenweiblue 2009-06-12
  • 打赏
  • 举报
回复
GridView编辑之后其实就是一个table.所以GridView和table一样可以跨行,也可以跨列.RowSpan和ColumnSpan.在后台可以控制.So easy
crazyleo814 2009-06-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhulong1111 的回复:]
你后台写个方法a把总计算出来!在前台丢个空间 在绑定控件的Text“ <%=  a(Eval("字段")) %>”至于参数就看你需要什么就传什么了哦
[/Quote]

这个方法就行
footer里其实是和普通字段一样的
那么你就可以用“求和”算出有多少条

zhulong1111 2009-06-12
  • 打赏
  • 举报
回复
你后台写个方法a把总计算出来!在前台丢个空间 在绑定控件的Text“<%= a(Eval("字段")) %>”至于参数就看你需要什么就传什么了哦
zhulong1111 2009-06-12
  • 打赏
  • 举报
回复
你在后台写个方法在前台绑定上这方法就行了撒
ovictor2009 2009-06-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 LYH_OHYES 的回复:]
什么意思?
[/Quote]

看不懂?是要显示如图的效果:
加载更多回复(2)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧