zoukankan      html  css  js  c++  java
  • 向datagrid中加横向 纵向的合计 (在datatable中实现,datatable间倒数据)

    最终效果

    如果实现??

     

    protected System.Web.UI.WebControls.DataGrid DataGrid1;

             /// <summary>

             /// 数据来源

             /// </summary>

             DataSet CreateDataSource()

             {

                  DataTable dt = new DataTable();

                  DataRow dr;

                dt.Columns.Add(new DataColumn("名称", typeof(string)));

                  dt.Columns.Add(new DataColumn("Value1", typeof(Int32)));

                  dt.Columns.Add(new DataColumn("Value2", typeof(Int32)));

                  dt.Columns.Add(new DataColumn("Value3", typeof(Int32)));

                  dt.Columns.Add(new DataColumn("Value4", typeof(Int32)));

                  for (int i = 0; i < 10; i++)

                  {

                       dr = dt.NewRow();

                    dr[0] = i.ToString()+"名称";

                       dr[1] = i;

                       dr[2] = i+1;

                       dr[3] = i+2;

                       dr[4] = i+3;

                       dt.Rows.Add(dr);

                  }

                    DataSet MyData=new DataSet();

                  MyData.Tables.Add(dt);

                  return MyData;

             }

             private void Page_Load(object sender, System.EventArgs e)

             {

                  // 在此处放置用户代码以初始化页面

                 

                  DataSet MyData=CreateDataSource();

    //            DataGrid1.DataSource= MyData;

    //            DataGrid1.DataBind();

                  DataTable MyTable=new DataTable();

                  DataColumn myColum;  

                  foreach( DataColumn  NowDataColumn in MyData.Tables[0].Columns)

                  {

                       myColum=new  DataColumn();

                       myColum.DataType=NowDataColumn.DataType;

                       myColum.ColumnName=NowDataColumn.ColumnName;

                       MyTable.Columns.Add(myColum);

                  }

                  myColum=new  DataColumn();

                  myColum.DataType=System.Type.GetType("System.Int32");

                  myColum.ColumnName="每行合计";

                  MyTable.Columns.Add(myColum);

                  DataRow  AcountRow;   

                  int DataColumns=MyData.Tables[0].Columns.Count;

                  foreach( DataRow  NowRow in  MyData.Tables[0].Rows)

                  {

                       AcountRow=MyTable.NewRow();

                       AcountRow.ItemArray=NowRow.ItemArray;

                       //每行合计

                       GetRowAccount(AcountRow,1,5,DataColumns);

                       MyTable.Rows.Add(AcountRow);

                  }

                  //生成的合计

                  AcountRow=MyTable.NewRow();

                  AcountRow[0]="竖列合计";   

                  for(int count=1;count<MyTable.Columns.Count;count++)

                       foreach (DataRow NowRow in  MyTable.Rows)

                       {

                           if(!AcountRow.IsNull(count))

                           {

                                if (!AcountRow.IsNull(count) )

                                     AcountRow[count]= Convert.ToInt32(AcountRow[count])+Convert.ToInt32(NowRow[count]);

                           }

                           else   AcountRow[count]=NowRow[count];;

                  }

                  MyTable.Rows.Add(AcountRow);

                  DataGrid1.DataSource=MyTable;

                  DataGrid1.DataBind();

     

             }

             /// <summary>

             /// 每行合计

             /// </summary>

             private  void  GetRowAccount(DataRow AcountRow,int begincol,int endcol,int accountcol)

             {

                  for(int i=begincol;i<endcol;i++)

                  {   

                       if(!AcountRow.IsNull(accountcol))

                       {

                       if ( !AcountRow.IsNull(i) )

                            AcountRow[accountcol]= Convert.ToInt32(AcountRow[accountcol])+Convert.ToInt32(AcountRow[i]);          

                       }

                       else  AcountRow[accountcol]=AcountRow[i];     

                  }

             }

     

    缺点: 把所有的数据都访问过 肯定效率不是很好

    还有其他的办法  如果有更好的方法  请告诉我 
  • 相关阅读:
    C++ 模板特化
    左值引用,右值引用以及移动语义
    搜狐2016研发工程师编程题
    java配置环境变量与常用技巧
    java在线聊天项目 使用SWT快速制作登录窗口,可视化窗口Design 更换窗口默认皮肤(切换Swing自带的几种皮肤如矩形带圆角)
    c++中的结构体:声明 定义 初始化
    用指针变量作函数形参接收数组地址,解决10个整数按由小到大顺序排序问题
    java在线聊天项目 实现基本聊天功能后补充的其他功能详细需求分析 及所需要掌握的Java知识基础 SWT的激活方法,swt开发包下载,及破解激活码
    java在线聊天项目1.0版 异常处理——开启多个客户端,关闭一个客户端后,在其他客户端中再发出信息会出现异常的处理
    第十一次作业
  • 原文地址:https://www.cnblogs.com/neozhu/p/100259.html
Copyright © 2011-2022 走看看