问题描述
解决方案
解决方案二:
【附上】部分代码:DataTableoldDataTable=newDataTable();oldDataTable.Columns.Add("商品");oldDataTable.Columns.Add("销售成本");oldDataTable.Columns.Add("销售利润");DataRowdr=oldDataTable.NewRow();for(inti=0;i<6;i++){dr=oldDataTable.NewRow();dr["商品"]="A";dr["销售成本"]=100+i;dr["销售利润"]=1000+i;oldDataTable.Rows.Add(dr);}
解决方案三:
oldDataTable.columns.insert添加就列了,然后对每一行进行处理啊最后在把数据进行处理,得到合计信息,添加行就可以了啊
解决方案四:
引用2楼wpfLove的回复:
oldDataTable.columns.insert添加就列了,然后对每一行进行处理啊最后在把数据进行处理,得到合计信息,添加行就可以了啊
oldDataTable.columns.有insert方法?
解决方案五:
该回复于2014-01-11 00:12:25被版主删除
解决方案六:
引用楼主xzwcn的回复:privateDataTableCalcOldTable(DataTabletable){DataTablenewDataTable=table.Clone();DataColumncol=newDataColumn("百分比1");//这里字段不能同名col.Caption="百分比";table.Columns.Add(col);col=newDataColumn("百分比2");//这里字段不能同名col.Caption="百分比";table.Columns.Add(col);inttotal1=(int)table.Compute("Sum(销售成本)","");inttotal2=(int)table.Compute("Sum(销售利润)","");for(inti=0;i<table.Rows.Count;i++){DataRowdr=newDataTable.NewRow();dr["商品"]=table.Rows[i]["商品"];dr["销售成本"]=table.Rows[i]["销售成本"];dr["销售利润"]=table.Rows[i]["销售利润"];dr["百分比1"]=(float.Parse(table.Rows[i]["销售成本"].ToString())/total1).ToString("D2%");dr["百分比2"]=(float.Parse(table.Rows[i]["销售利润"].ToString())/total2).ToString("D2%");newDataTable.Rows.Add(dr);}returnnewDataTable;}
解决方案七:
引用3楼xzwcn的回复:
Quote: 引用2楼wpfLove的回复:
oldDataTable.columns.insert添加就列了,然后对每一行进行处理啊最后在把数据进行处理,得到合计信息,添加行就可以了啊oldDataTable.columns.有insert方法?
竟然没有insert方法,那这样,如果你是要绑定到程序中,那楼上的方法即可以,但是如果要严格按照格式来输出到excel等地方,那就重新new一个DataTable,按照顺序添加列,再循环添加行,就可以了。这样对于整个DataTable的整体输出,比较容易。看你具体的场景了,大部分情况,楼上的都可以解决。
解决方案八:
引用5楼wyd1520的回复:
Quote: 引用楼主xzwcn的回复:privateDataTableCalcOldTable(DataTabletable){DataTablenewDataTable=table.Clone();DataColumncol=newDataColumn("百分比1");//这里字段不能同名col.Caption="百分比";table.Columns.Add(col);col=newDataColumn("百分比2");//这里字段不能同名col.Caption="百分比";table.Columns.Add(col);inttotal1=(int)table.Compute("Sum(销售成本)","");inttotal2=(int)table.Compute("Sum(销售利润)","");for(inti=0;i<table.Rows.Count;i++){DataRowdr=newDataTable.NewRow();dr["商品"]=table.Rows[i]["商品"];dr["销售成本"]=table.Rows[i]["销售成本"];dr["销售利润"]=table.Rows[i]["销售利润"];dr["百分比1"]=(float.Parse(table.Rows[i]["销售成本"].ToString())/total1).ToString("D2%");dr["百分比2"]=(float.Parse(table.Rows[i]["销售利润"].ToString())/total2).ToString("D2%");newDataTable.Rows.Add(dr);}returnnewDataTable;}
ServerErrorin'/'Application.--------------------------------------------------------------------------------InvalidusageofaggregatefunctionSum()andType:String.Description:Anunhandledexceptionoccurredduringtheexecutionofthecurrentwebrequest.Pleasereviewthestacktraceformoreinformationabouttheerrorandwhereitoriginatedinthecode.ExceptionDetails:System.Data.DataException:InvalidusageofaggregatefunctionSum()andType:String.SourceError:Line85:table.Columns.Add(col);Line86:Line87:inttotal1=(int)table.Compute("Sum(销售成本)","");Line88:inttotal2=(int)table.Compute("Sum(销售利润)","");Line89:
解决方案九:
引用6楼wpfLove的回复:
Quote: 引用3楼xzwcn的回复:
Quote: 引用2楼wpfLove的回复:
oldDataTable.columns.insert添加就列了,然后对每一行进行处理啊最后在把数据进行处理,得到合计信息,添加行就可以了啊oldDataTable.columns.有insert方法?
竟然没有insert方法,那这样,如果你是要绑定到程序中,那楼上的方法即可以,但是如果要严格按照格式来输出到excel等地方,那就重新new一个DataTable,按照顺序添加列,再循环添加行,就可以了。这样对于整个DataTable的整体输出,比较容易。看你具体的场景了,大部分情况,楼上的都可以解决。
不行哦。。。你看下7楼的问题。
解决方案十:
这种只是稍微复杂一点的学校作业,还是自己做吧。
解决方案十一:
引用9楼sp1234的回复:
这种只是稍微复杂一点的学校作业,还是自己做吧。
哦哦,有空我再搞搞。但这不是学校作业...是实际应用的。只是我把数据PS了。。另见:http://bbs.csdn.net/topics/390690934