向datagrid中加横向 纵向的合计 (在datatable中实现,datatable间倒数据)

转载 2004年07月01日 09:34:00
CSDN - 文档中心 - .NET    
标题     向datagrid中加横向 纵向的合计 (在datatable中实现,datatable间倒数据)    dragonsuc(原作)
关键字     datatable

没有合计

最终效果

如果实现??

 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

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];     

              }

         }

 

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

还有其他的办法  如果有更好的方法  请告诉我 

向datagrid中加横向 纵向的合计 (在datatable中实现,datatable间倒数据)

没有合计最终效果如果实现?? protected System.Web.UI.WebControls.DataGrid DataGrid1;         ///          /// 数据来源...
  • dragonsuc
  • dragonsuc
  • 2003年08月03日 17:08
  • 1293

将DataGrid(gridview)中的数据赋值到datatable,只需要一句

DataTable table = (DataTable)DataGrid.DataSource;
  • huanglin529
  • huanglin529
  • 2016年12月20日 10:35
  • 235

给DataTable添加数据

                DataTable dt = new DataTable();                DataColumn dc = new DataColumn("img",...
  • maji9370
  • maji9370
  • 2009年06月24日 08:41
  • 5269

C#Datatable分组操作SUM求和Group by

C#Datqtable 实现类似于Group by的分组操作
  • dream_follower
  • dream_follower
  • 2016年08月25日 22:01
  • 970

WPF DataGrid 绑定 DataTable

DataGrid 绑定 DataTable: 界面: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation...
  • youqingyike
  • youqingyike
  • 2015年08月22日 23:52
  • 4377

DataTable 与 datagrid控件

datagrid控件的作用简单点说就是将表格显示出来,用的多的是直接链接数据库文件,也可以自己见一个表格对象,链接到datagrid控件,下面是一个简单的例子             DataT...
  • jiliqiang1986
  • jiliqiang1986
  • 2016年07月26日 13:39
  • 1721

C#--将数据写入DataTable[学习笔记]

定义表并将数据写入表中        //实例化一张表并定义表结构        DataTable dt = new DataTable("IPtoHost");        dt.Columns...
  • canzer
  • canzer
  • 2007年09月01日 19:38
  • 3049

DataTable 基础操作一 往DataTable中添加数据

DataTable dt=new DataTable(); //新建一个DataTable的实例dt DataRow dr; //声明一个DataRow实例dr dt.Columns.Add(new ...
  • Nightmare_
  • Nightmare_
  • 2007年07月31日 11:36
  • 1182

WPF DataGrid的数据源以DataTable设定

1  前台代码                                       后台代码        Dim objDA As New System.Data.Sql...
  • czf2505
  • czf2505
  • 2013年11月29日 16:44
  • 2967

DataTable纵向记录转换成横向列显示,动态新增列及填充数据

DataTable dt = Maticsoft.DBUtility.DbHelperOra.Query(QuerySql).Tables[0]; #region 创建新的DataTable ...
  • smartsmile2012
  • smartsmile2012
  • 2012年11月27日 13:42
  • 2964
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:向datagrid中加横向 纵向的合计 (在datatable中实现,datatable间倒数据)
举报原因:
原因补充:

(最多只允许输入30个字)