ITPub博客

首页 > 数据库 > 数据库开发技术 > 向datagrid中加横向 纵向的合计 (在datatable中实现,datatable间倒数据) (转)

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

原创 数据库开发技术 作者:a400 时间:2007-09-25 20:59:17 0 删除 编辑
向datagrid中加横向 纵向的合计 (在datatable中实现,datatable间倒数据) (转)[@more@]

没有合计2003-8-31608010.jpg" align=baseline border=0>

最终效果

如果实现??

 :namespace prefix = o ns = "urn:schemas--com::office" />

protected System..UI.WebControls.DataGrid DataGrid1;

  ///

  /// 数据来源

  ///

  DataSet CreateData()

  {

  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( 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

  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();

 

  }

  ///

  /// 每行合计

  ///

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

  {

  for(int i=begincol;i

  { 

  if(!AcountRow.IsNull(accountcol))

  {

  if ( !AcountRow.IsNull(i) )

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

  }

  else  AcountRow[accountcol]=AcountRow[i]; 

  }

  }

 

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

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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10790690/viewspace-972318/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 关于BREW (转)
请登录后发表评论 登录
全部评论
  • 博文量
    826
  • 访问量
    239476