有关 Datagrid 问题 HOW TO: Create a Summary Row for a DataGrid in ASP.NET by Using Visual Basic .NEThttp://support.microsoft.com/default.aspx?scid=KB;EN-US;Q313154 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://tech.ccidnet.com/pub/article/c340_a79297_p1.htmlhttp://tech.ccidnet.com/pub/article/c322_a79386_p1.html 向datagrid中加横向 纵向的合计 (在datatable中实现,datatable间倒数据) dragonsuc(原作) 关键字 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]; } } 缺点: 把所有的数据都访问过 肯定效率不是很好还有其他的办法 如果有更好的方法 请告诉我 。 给个思路,1 做个LABLE然后循环获得数据累加获得2 作个计算FUNCTION输出文本来 /// <summary> /// 为每一列加一个合计 /// </summary> /// <param name="dt"></param> /// <returns></returns> private DataTable AddCountRow(DataTable dt) { DataRow countRow = dt.NewRow (); countRow["in_time"] = "</a>合计<a>"; foreach(DataRow row in dt.Rows) { int rowCount = 7;//需要合计的列数 从第1列开始到第{0}列 for(int i = 1;i <= rowCount;i++) { countRow[i] = (countRow[i].ToString ().Equals ("") ? 0 : Convert.ToInt32 (countRow[i])) + (row[i].ToString ().Equals ("") ? 0 : Convert.ToInt32 (row[i])); } } dt.Rows.Add (countRow); return dt; } 对 工 字的探讨~~~ 问个有关window.open的简单问题!马上结分! div中设置滚动条 ASP.net 怎么读文本是乱码还有... dataset添加数据到数据库后,怎么重新获取数据??? 麻烦高手帮帮忙! access数据库怎么处理多用户同时访问? gridview在没有数据时添加一行,用来添加新数据 Microsoft .NET 框架无法安装 Asp页面怎么调出打印Excel表格 ASP.NET里面怎么改变DataGrid中某一行的字体颜色? 无法启动调试;ASP被禁用,因为ASP进程正在作为不具备调试权限的用户动行.如何解解?
关键字 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]; } } 缺点: 把所有的数据都访问过 肯定效率不是很好还有其他的办法 如果有更好的方法 请告诉我 。
1 做个LABLE然后循环获得数据累加获得
2 作个计算FUNCTION输出文本来
/// 为每一列加一个合计
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
private DataTable AddCountRow(DataTable dt)
{
DataRow countRow = dt.NewRow ();
countRow["in_time"] = "</a>合计<a>";
foreach(DataRow row in dt.Rows)
{
int rowCount = 7;//需要合计的列数 从第1列开始到第{0}列
for(int i = 1;i <= rowCount;i++)
{
countRow[i] = (countRow[i].ToString ().Equals ("") ? 0 : Convert.ToInt32 (countRow[i])) + (row[i].ToString ().Equals ("") ? 0 : Convert.ToInt32 (row[i]));
}
}
dt.Rows.Add (countRow);
return dt;
}