求一个在C#中合计动态列行的值给新创建的列行中显示

zhlym 2007-03-19 04:17:00
求一个在C#中合计动态列行的值给新创建的列行中显示

...前面DataSet部分略去不写
for (int i = 0; i < ms.Length; i++)
{
mser = ms[i].Split('#');
BoundField bf1 = new BoundField();
bf1.HeaderText = "销量";
bf1.DataField = "a" + mser[0];
this.GridView1.Columns.Add(bf2);
}

BoundField bf3 = new BoundField();
bf3.HeaderText = "销量合计";
bf3.DataField = "";

this.GridView1.Columns.Add(bf3);

this.GridView1.DataSource = ds.Tables[0].DefaultView;
this.GridView1.DataBind();

说明:如上代码 "a" + mser[0] 是配合数据库中动态的字段名,现在想把每行的销量值合计显在新创建的列“销量合计”中,(由于某种原因这个合计不能在存储过程里做)请大家出下手
...全文
310 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhlym 2007-03-20
  • 打赏
  • 举报
回复
非常感谢cpp2017(慕白兄),这问题折了我一下午,最后的一点让我矛塞盾开,问题得到解决
cpp2017 2007-03-19
  • 打赏
  • 举报
回复
sorry
上面写错了应该是
ds.Tables[0].Columns.Add("total",typeof(decimal),"字段1+字段2");
zhlym 2007-03-19
  • 打赏
  • 举报
回复
麻烦大家再指点下
zhlym 2007-03-19
  • 打赏
  • 举报
回复
wangdetian168

你这样取值勤,int per = Convert.ToInt32(e.Item.Cells[0].Text); 不行的,我的Cells[0]列值还没生成呀,似乎你的答案占不了边
wangdetian168 2007-03-19
  • 打赏
  • 举报
回复
if(e.Item.ItemType==ListItemType.footer)
{
int per = Convert.ToInt32(e.Item.Cells[0].Text);
sum+=per;
e.item.cells[0].Text=sum;
}
zhlym 2007-03-19
  • 打赏
  • 举报
回复
cpp2017(慕白兄) & sp1234(想象力真的那么难吗?)

再指点下,就差我上面提到的二点想不通了
zhlym 2007-03-19
  • 打赏
  • 举报
回复
sp1234(想象力真的那么难吗?)
能否写出代表的代码?同时由于我的字段是通过循环动态获取的,请也帮考虑进去
  • 打赏
  • 举报
回复
哦,上面我搜索的不对。

行的合计你写个函数从ds.Tables[0]里计算不行吗?
  • 打赏
  • 举报
回复
参考:

http://www.google.com/search?hl=zh-CN&newwindow=1&rls=com.microsoft%3Aen-US&q=gridview+ListItemType.Footer+%E5%90%88%E8%AE%A1&lr=lang_zh-CN%7Clang_zh-TW
zhlym 2007-03-19
  • 打赏
  • 举报
回复
cpp2017(慕白兄)
我以下这样加,发现还存在两个问题

第一: 我的合计是横着计算的,并非竖着算的,如何横着把各行相加?
第二: 由于ds.Tables[0].Columns ...这句是放在for 里,如两上以上循环时会报 “名为"tatal"的列已属于此DateTable” 的错,如何避免?


for (int i = 0; i < ms.Length; i++)
{
mser = ms[i].Split('#');
BoundField bf1 = new BoundField();
bf1.HeaderText = "销量";
bf1.DataField = "a" + mser[0];
ds.Tables[0].Columns.Add("total",typeof(decimal),"a" + mser[0]);
this.GridView1.Columns.Add(bf2);
}

BoundField bf3 = new BoundField();
bf3.HeaderText = "销量合计";
bf3.DataField = "tatal";
cpp2017 2007-03-19
  • 打赏
  • 举报
回复
ds.Tables[0].Columns.Add("total",typeof(decimal),"sum(销量字段)"); =======> 我给你的代码就是在datatable中加上这个字段。
zhlym 2007-03-19
  • 打赏
  • 举报
回复
cpp2017(慕白兄)
我的都没有 total字段 呀,如有我就不用提出问题了
cpp2017 2007-03-19
  • 打赏
  • 举报
回复
绑定total字段就可以了。
cpp2017 2007-03-19
  • 打赏
  • 举报
回复
在datatable中做就可以。 ds.Tables[0].Columns.Add("total",typeof(decimal),"sum(销量字段)");
zhlym 2007-03-19
  • 打赏
  • 举报
回复
大家出手下

62,025

社区成员

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

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

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

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