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

2016-01-29 13:00 32 1 收藏

点击DataGrid的列标头在DataGrid最后一行显示该列的和,点击DataGrid的列标头在DataGrid最后一行显示该列的和

【 tulaoshi.com - ASP.NET 】


单击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+"rn"+fe.Source);
}
myTable.Rows.Add(dr);
Sumed=true;
}
}
}

来源:https://www.tulaoshi.com/n/20160129/1488491.html

延伸阅读
新建一个应用,在窗体Form1上添加两个Tlabel组件名为Label1,Label2; 添加两个Tbutton组件名为Button1,Button2;添加一个Tmemo组件名为Memo1。 然后在代码编辑器中添加以下代码。 void __fastcall TForm1::Button1Click(Tobject *Sender) { Label1→Caption=SendMessage(Memo1→Handle,EM_LINEFROMCHAR...
有时,你需要为在DataGrid中显示每行的序号,如果使用Oracle数据库,你可以利用RowNum在Select命令中构造行序号,然后直接绑定到DataGrid,但是如果用的是SQL Server数据库,那么,该如何为Datagrid中增加行序号呢? ADO.NET中通过DataColumn的3个属性来支持自动增量列:AutoIncrement,AutoIncrementSeed,AutoIncrementStep。只要将DataColumn的Auto...
标签: 电脑入门
如何批量修改wps表格/excel数据中,实现对一列(行)的加、减、乘、除?? 比如我们做好一个L表格,填好了数据,现在想修改其中的一列(行),例如:想在A列原来的数据的基础上加8,有没有这样的?是不是非得手工的一个一个数据地住上加?对于这个问题我们自然想到了利用,当你利用工式输入A1=A1+8时,你会得到EXCEL的一个警告:WPS表格不能计算该公式...
标签: excel
Excel 2007中隐藏或显示行和列的方法汇总 Excel 2007中,可以使用隐藏命令隐藏行或列,将行高或列宽更改为 0(零)时,也可以隐藏行或列。使用取消隐藏命令可以使其再次显示。 隐藏行或列 1、选择要隐藏的行或列。 如何选择单元格、区域、行或列 选择操作 一个单元格:单击该单元格或按箭头键,移至该单元格。 ...
标签: excel
excel中一共有多少行和列   一、Excel2003(.xls)文件:最大256(IV,2的8次方)列,最大65536(2的16次方)行;即横向256个单元格,竖向65536个单元格。 Excel2007(.xlsx)文件:最大16384(XFD,2的14次方)列,最大1048576(2的20次方)行;即横向16384个单元格,竖向1048576个单元格。 二、如果你想自己去测试看看,方法也是很简...

经验教程

443

收藏

10
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部