点击DataGrid的列标头在DataGrid最后一行显示该列的和
2005-01-18 12:58
239 查看
单击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<myTable.Columns.Count;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;
}
}
}
如果想简单的方法的话请参见: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<myTable.Columns.Count;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;
}
}
}
相关文章推荐
- 点击DataGrid的列标头在DataGrid最后一行显示该列的和
- F:在datagrid中 怎么实现 点击一行(多列)传一个id过去到第二页显示其具体内容,不用按钮、链接等?
- 如何让DataGrid能够在客户端点击某一行的任意位置,而触发服务端的事件(Asp.net)
- TextView最后一行,不完全显示。截取显示
- android编程经验-怎么使文字始终显示最后一行
- 鼠标指向表格中的一行时,该行背景色改变;点击行时,突出显示标记颜色
- android GridView最后一行显示不完整解决办法
- 实现textview最后一行只显示一半的效果
- 完美解决 向UILable 文字最后插入N张图片,支持向限制行数的UILable 最后一行插入,多余文字显示...
- 微信小程序开发2-点击列表中的某一行跳转到新的页面显示该列的详细信息
- jQuery滚动插件Sly.js 滑动最后几个元素不在一行 滑动显示不完整
- 如何将Textctrl的滚动条保持在最后一行并且更新显示
- Tableview最后一行无法显示或者显示不全
- Android ListView 指定显示最后一行
- 各位大虾请帮忙 如何实现用鼠标点击datagrid的某一行然后用js获得选中行的所有值
- 富文本添加颜色大小及点击事件,防止最后一句断行显示。
- 普通Listview加载列表,最后一行是带输入框的显示问题
- 超级Log工具,能显示你的文件名、方法、行数并且可以点击到那一行
- 关于点击某个字段的时候弹出一个dialog的方法(显示dialog里面datagrid的表的数据)
- 点击datagrid的一行,将一个页面滑动到指定的位置