请问分页的gridview怎样统计某一列的数据?

wanyu0 2008-12-27 04:26:05
据个例子:gridview中共有38条记录,每页10条,我怎样在页脚下显示这38条记录的某一列的和?
...全文
582 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
cteddy 2008-12-29
  • 打赏
  • 举报
回复
讲了这么多了

都不错的
yefengzhixia 2008-12-28
  • 打赏
  • 举报
回复
顶了

刚建一c#群 63242231 希望有志同道合的朋友和高手指导

谢谢。。。呵呵呵
MAOGE1987 2008-12-28
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 koukoujiayi 的回复:]
楼主是用SqlDataSource
SqlDataSource对于楼主的问题可以通过界面设置也可以用代码打入,例如:
代码方式:
SqlDataSource1.SelectCommand = "SELECT name, score1, score2  FROM Poll union select '总计',sum(score1),sum(score2)  FROM Poll";
[/Quote]
同意
koukoujiayi 2008-12-28
  • 打赏
  • 举报
回复
楼主是用SqlDataSource
SqlDataSource对于楼主的问题可以通过界面设置也可以用代码打入,例如:
代码方式:
SqlDataSource1.SelectCommand = "SELECT name, score1, score2 FROM Poll union select '总计',sum(score1),sum(score2) FROM Poll";
阿彪兄 2008-12-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 malin2670372 的回复:]
select 字段1,字段2 from yourTable where ...
union
select sum(字段1),sum(字段2) from yourTable where ...
完全可以
[/Quote]
同意
wanyu0 2008-12-28
  • 打赏
  • 举报
回复
protected void SqlDataSource1_Selecting1(object sender, SqlDataSourceSelectingEventArgs e)
{
e.Command.CommandText += " where 1 = 1 ";
if (TextBox1.Text != "")
{
e.Command.CommandText += " and XIO like '%" + TextBox1.Text.Trim() + "%'";
}
}


我绑定上面的代码,使用union不太方便。
wanyu0 2008-12-28
  • 打赏
  • 举报
回复
protected void SqlDataSource1_Selecting1(object sender, SqlDataSourceSelectingEventArgs e)
{
e.Command.CommandText += " where 1 = 1 ";
if (TextBox1.Text != "")
{
e.Command.CommandText += " and XIO like '%" + TextBox1.Text.Trim() + "%'";
}
}


我绑定上面的代码,使用union不太方便。
koukoujiayi 2008-12-28
  • 打赏
  • 举报
回复
楼主给你的代码有问题吗?
是什么问题??
select 字段1,字段2 from yourTable where ...
union
select sum(字段1),sum(字段2) from yourTable where ...
wanyu0 2008-12-28
  • 打赏
  • 举报
回复
寻求各位老师,给个详细解答。
wanyu0 2008-12-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sp1234 的回复:]
其实涉及界面控件的最好以xhtml设计代码中声明为好,而后台代码中应该仅仅提供数据而并不关心使用它的控件,这样把界面模型和数据模型分开。因此,与其在GVdetail_RowDataBound 去查找控件位置(通常,我不允许想当然地去假设一个控件一定在第6列或者第7列,那样给界面调整制造的更多麻烦)然后再去调用后台数据模型性并且去设置控件的值,不如在将界面上简单地声明一下与数据模型的关系即可。

在首列,你可以在模板中插入:…
[/Quote]


俺是初学者,
能问一下,Sumqty怎么定义?

能给提供一个详细代码的定义吗?
mengxj85 2008-12-27
  • 打赏
  • 举报
回复
Up
wuyq11 2008-12-27
  • 打赏
  • 举报
回复
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowIndex >= 0)
{
sum += Convert.ToDouble(e.Row.Cells[2].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();
}
}
anncesky 2008-12-27
  • 打赏
  • 举报
回复
datatable有个compute很好用的
  • 打赏
  • 举报
回复
其实涉及界面控件的最好以xhtml设计代码中声明为好,而后台代码中应该仅仅提供数据而并不关心使用它的控件,这样把界面模型和数据模型分开。因此,与其在GVdetail_RowDataBound 去查找控件位置(通常,我不允许想当然地去假设一个控件一定在第6列或者第7列,那样给界面调整制造的更多麻烦)然后再去调用后台数据模型性并且去设置控件的值,不如在将界面上简单地声明一下与数据模型的关系即可。

在首列,你可以在模板中插入:
<FooterTemplate>
合计:
</FooterTemplate>


而在相应的数据列的模板插入:
<FooterTemplate>
<asp:Label runat="server" Text="<%# this.Sumqty() %>" />
</FooterTemplate>




如果有多个数据列都要统计,同时你要仅访问后台数据一次,那么可能需要在 DataBinding 事件中先进行统计,将结果写入一个声明为private DataRow的变量(或者Dictionary<string object>等等)保存每一个列名称与统计值的对应数据,而在Sumqty方法中提供一个列名称来查询,在界面设计声明时可以直接写::
<FooterTemplate>
<asp:Label runat="server" Text='<%# this.Sumqty("fld_name") %>' />
</FooterTemplate>



使用声明风格,尽量少写代码。
antiking 2008-12-27
  • 打赏
  • 举报
回复
写那么多代码不如8楼几句.
cwmwss 2008-12-27
  • 打赏
  • 举报
回复
或者:
protected string Sumqty()
{
return dtd.Compute("sum(mat_qty)", "").ToString();
}
dtd是你gridvivew绑定和datatable,mat_qty是列名
cwmwss 2008-12-27
  • 打赏
  • 举报
回复
protected void GVdetail_RowDataBound(object sender, GridViewRowEventArgs e)
{

if (e.Row.RowType == DataControlRowType.DataRow)
{
wastageqty += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "wastage_qty"));


}
else if (e.Row.RowType == DataControlRowType.Footer)
{

// e.Row.Cells[5].Text = "单耗合计:"; //在Footer里对单耗列汇总
e.Row.Cells[6].Text = wastageqty.ToString();
wastageqty = 0;

}
}
koukoujiayi 2008-12-27
  • 打赏
  • 举报
回复
怎么统计?没看明白。
gridview的第38页的最后一行就是统计值!!
wanyu0 2008-12-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 koukoujiayi 的回复:]
用union,例如sql语句:

SQL code
select 字段1,字段2 from yourTable where ...
union
select sum(字段1),sum(字段2) from yourTable where ...
[/Quote]


怎么统计?没看明白。


wanyu0 2008-12-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 flyrain521 的回复:]
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.Cell…
[/Quote]


您说的,如果部分页是可以的,现在是分页的,要把这38页全部统计。
加载更多回复(3)

62,073

社区成员

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

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

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

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