HOW TO: Create a Summary Row for a DataGrid in ASP.NET by Using Visual Basic .NET
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q313154
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q313154
解决方案 »
- Gridview的问题
- asp.net 能用gzipStream对页面html,js,css文件进行压缩吗?
- iis HTTP/1.1 新建应用程序失败,父路径等基本设置都已更改,但还是不能访问
- 不用组件怎样实现列表功能?
- 如何刪除數據庫裡超過20分鐘的數據
- 急!!! 如何把Microsoft Visual Studio 2005中工具箱控件找出来
- javascript问题?
- Media Player 文件切换问题。(在线等待,一直等)
- 轉txt檔案問題
- 很急,帮帮忙(高分相送)
- 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;
}