当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > 点击DataGrid的列标头在DataGrid最后一行显示该列的和

ASP.NET
C#教程:简化的初始化
C#教程:隐式类型的局部变量
ASP.NET 2.0教程:Bind标签和Eval标签
用C#语言获取CPU利用率
ASP.Net实例:直接在邮件中内联附件内嵌图片
ASP.NET教程:性能优化的方法
ASP.NET开发方式的四层架构的Web应用系统构造
BasicHTTP-唯一能直接与Java交互的方式
ASP.NET教程:截取字符串
如何用ASP.NET实现多附件上传?
.Net程序员必读:八个实用网站推荐
.NET环境下为网站增加IP过滤功能
在.Net框架类库中如何使用定时器类
Asp.net是可以帮你实现Urlrewrite的
.NET开发过程中易被忽视的问题
ASP.NET教程:多个Set排列算法
c# 分布式事务以及MSDTC
解决ASP.NET2.0网站中对路径访问被拒绝问题
ASP.NET通过WMI创建站点添加虚拟目录和主机头
VS 2008完美地支持JavaScript和ASP.NET AJAX

ASP.NET 中的 点击DataGrid的列标头在DataGrid最后一行显示该列的和


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 168 ::
收藏到网摘: n/a


单击DATAGRID 的某一列时,在DATAGRID的最后增加一行,把整列的和显示在增加的这一行里。
如果想简单的方法的话请参见:DataColumn.Expression 属性 [C#]:获取或设置表达式,用于筛选行、计算列中的值或创建聚合列。
笨方法如下:
bool Sumed=false;//指示是否在最后一行显示了该列的和
private void dataGrid1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
DataGrid.HitTestInfo hit=this.dataGrid1.HitTest(e.X,e.Y);
if(hit.Column!=-1)
{
try
{
this.dataGrid1.GetCellBounds(hit.Row,hit.Column);//取该单元格的Rectangle,如果出错说明单击了列标头
}
catch(System.IndexOutOfRangeException oir)
{//单击了列标头之后,功能代码->求和,添加到最后一列
int Sum=0;//某列总和
int iRow;
DataTable myTable;
myTable = (DataTable) ((DataSet)this.dataGrid1.DataSource).Tables[0];
if(Sumed)//如果datagrid已经添加了该列的和则在下次计算时应移除
{
DataRow drSum=myTable.Rows[myTable.Rows.Count-1];
drSum.Delete();
}
for(iRow = 0;iRow < myTable.Rows.Count ;iRow++)
{
Sum+=System.Convert.ToInt32(this.dataGrid1[iRow,hit.Column].ToString());//计算该列总和

}
//以下为添加到该列的最后一行代码
System.Data.DataRow dr=myTable.NewRow();
try
{
for(int k=0;k {
if(k==hit.Column)
{
dr[k]=Sum.ToString();//该列的和添加到列尾
}
else//其他列
{
//MessageBox.Show();
switch(dr[k].GetType().ToString())
{
case "System.Int32":
dr[k]=0;
break;
case "System.String":
dr[k]="总和";
break;
}
}
}
}
catch(System.FormatException fe)
{
MessageBox.Show(fe.Message+"\r\n"+fe.Source);
}
myTable.Rows.Add(dr);
Sumed=true;
}
}
}