问题描述如下:1)我先前有一个很普通的查询统计表,只有数字,记录,比如:
材料名称 型号规格 数量 计划单价 合计
------------------------------------------------------------------
线材 10MM 1 10.00 10.00
普通硅酸盐水泥 P.O42.5R 10 11.00 110.00
2)后来过了一段时间,客户要求加一个统计,于是我用了如下方法加了
Dim dr As DataRow = ds.Tables("table").NewRow()
dr("amount") = ds.Tables("table").Compute("sum(amount)", "")
dr("matname") = "合计"
dr("plmoney") = ds.Tables("table").Compute("sum(plmoney)", "")
ds.Tables("table").Rows.Add(dr)
显示效果:
我先前有一个很普通的查询统计表,只有数字,记录,比如:
材料名称 型号规格 数量 计划单价 合计
------------------------------------------------------------------
线材 10MM 1 10.00 10.00
线材 18MM 10 11.00 110.00合计 11 120.00
3)随着数据量大,客户说,合计显示在后面不好找,要显示到前面吧,显示成效果如下:
材料名称 型号规格 数量 计划单价 合计
------------------------------------------------------------------
合计 11 120.00线材 10MM 1 10.00 10.00
线材 18MM 10 11.00 110.00我又一次屈服了,做法如下:
给表增加一列sortflag,用来排序Dim dcol As DataColumn = ds.Tables("table").Columns.Add("SortFlag", System.Type.GetType("System.Int32"))
Dim i As Int64 = 0
For i = 0 To ds.Tables("table").Rows.Count - 1
ds.Tables("table").Rows(i).BeginEdit()
ds.Tables("table").Rows(i).Item(ds.Tables("table").Columns.Count - 1) = 0
ds.Tables("table").Rows(i).EndEdit()
Next而在汇总前,也给此列一个值
dr("SortFlag") = 1
然后写了
ds.Tables("table").Rows.Add(dr)
一句4)后来他被我惯坏了,又有了新的想法,想要上下都有合计的效果。
材料名称 型号规格 数量 计划单价 合计
------------------------------------------------------------------
合计 11 120.00线材 10MM 1 10.00 10.00
线材 18MM 10 11.00 110.00合计 11 120.00没问题!无非就是将ds.Tables("table").Rows.Add(dr)写两次,一次dr("SortFlag") = 1,一次dr("SortFlag") = -1
如果问题仅仅是如此简单就好了。他要求所有的查询表都这样。我再次吐血了。为了实现我写了一个类调用,然后在数据库里动态配置。
=====================================================================================
*************************************************************************************
=====================================================================================
问题出来了:
public static void AddSummationLine(DataSet ds)
{
DataColumn dcol = new DataColumn();
int iCount;
dcol = ds.Tables[0].Columns.Add("SortFlag", System.Type.GetType("System.Int32"));
for(iCount=0;iCount< ds.Tables[0].Rows.Count -1;iCount++)
{
ds.Tables[0].Rows[iCount].BeginEdit();
ds.Tables[0].Rows[iCount].Item(ds.Tables("table").Columns.Count - 1) = 0;///???????????这句是错的!①
ds.Tables[0].Rows[iCount].EndEdit();
}
}
摘取程序片段如上。如果真的是①处的效果就万事大吉了,当我ds.Tables[0].Rows[iCount].后,发现没有.Item,只有.ItemArray
===============================================================
***************************************************************
===============================================================
说的比较罗索,希望能把问题描述清楚。现在想求教①处该如何写,才能更改我新增列的值!
材料名称 型号规格 数量 计划单价 合计
------------------------------------------------------------------
线材 10MM 1 10.00 10.00
普通硅酸盐水泥 P.O42.5R 10 11.00 110.00
2)后来过了一段时间,客户要求加一个统计,于是我用了如下方法加了
Dim dr As DataRow = ds.Tables("table").NewRow()
dr("amount") = ds.Tables("table").Compute("sum(amount)", "")
dr("matname") = "合计"
dr("plmoney") = ds.Tables("table").Compute("sum(plmoney)", "")
ds.Tables("table").Rows.Add(dr)
显示效果:
我先前有一个很普通的查询统计表,只有数字,记录,比如:
材料名称 型号规格 数量 计划单价 合计
------------------------------------------------------------------
线材 10MM 1 10.00 10.00
线材 18MM 10 11.00 110.00合计 11 120.00
3)随着数据量大,客户说,合计显示在后面不好找,要显示到前面吧,显示成效果如下:
材料名称 型号规格 数量 计划单价 合计
------------------------------------------------------------------
合计 11 120.00线材 10MM 1 10.00 10.00
线材 18MM 10 11.00 110.00我又一次屈服了,做法如下:
给表增加一列sortflag,用来排序Dim dcol As DataColumn = ds.Tables("table").Columns.Add("SortFlag", System.Type.GetType("System.Int32"))
Dim i As Int64 = 0
For i = 0 To ds.Tables("table").Rows.Count - 1
ds.Tables("table").Rows(i).BeginEdit()
ds.Tables("table").Rows(i).Item(ds.Tables("table").Columns.Count - 1) = 0
ds.Tables("table").Rows(i).EndEdit()
Next而在汇总前,也给此列一个值
dr("SortFlag") = 1
然后写了
ds.Tables("table").Rows.Add(dr)
一句4)后来他被我惯坏了,又有了新的想法,想要上下都有合计的效果。
材料名称 型号规格 数量 计划单价 合计
------------------------------------------------------------------
合计 11 120.00线材 10MM 1 10.00 10.00
线材 18MM 10 11.00 110.00合计 11 120.00没问题!无非就是将ds.Tables("table").Rows.Add(dr)写两次,一次dr("SortFlag") = 1,一次dr("SortFlag") = -1
如果问题仅仅是如此简单就好了。他要求所有的查询表都这样。我再次吐血了。为了实现我写了一个类调用,然后在数据库里动态配置。
=====================================================================================
*************************************************************************************
=====================================================================================
问题出来了:
public static void AddSummationLine(DataSet ds)
{
DataColumn dcol = new DataColumn();
int iCount;
dcol = ds.Tables[0].Columns.Add("SortFlag", System.Type.GetType("System.Int32"));
for(iCount=0;iCount< ds.Tables[0].Rows.Count -1;iCount++)
{
ds.Tables[0].Rows[iCount].BeginEdit();
ds.Tables[0].Rows[iCount].Item(ds.Tables("table").Columns.Count - 1) = 0;///???????????这句是错的!①
ds.Tables[0].Rows[iCount].EndEdit();
}
}
摘取程序片段如上。如果真的是①处的效果就万事大吉了,当我ds.Tables[0].Rows[iCount].后,发现没有.Item,只有.ItemArray
===============================================================
***************************************************************
===============================================================
说的比较罗索,希望能把问题描述清楚。现在想求教①处该如何写,才能更改我新增列的值!
解决方案 »
- 一个疑问 弄不明白啊 还请高手帮忙解答下
- 如何解决服务器供应商提供一个空间下,放两个asp.net网站.
- RadioButton的问题,急求各位
- 关于避免后台调用JS的问题
- 帮忙除错,貌似配置文件有问题.
- 在2000下如何设置ACCESS的写入权限??(在线等)
- asp.net缓存问题(难啊)
- 为什么一个HTML可以链接到另一个HTML,但放入ASP.NET里建的网站目录里就不行了?
- 哪里有asp.net和windows media server协作开发的资料?
- 菜鸟问题
- 返回页面时,文本框或其它的相关控件的值清空问题,请各位大侠帮帮忙为谢,在线等!
- Kaersoft_Forum不能运行,为何?
{
ds.Tables[0].Rows[iCount].BeginEdit();
ds.Tables[0].Rows[iCount].Item(ds.Tables("table").Columns.Count - 1) = 0;///???????????这句是错的!①
ds.Tables[0].Rows[iCount].EndEdit();
}
要完成什么功能?
Dim dcol As DataColumn = ds.Tables("table").Columns.Add("SortFlag", System.Type.GetType("System.Int32"))
是在数据读到ds里后写的,所以sortflag是空值
而我显示的时候想用-1,0,1来排序,所有记录的sortflag=0,在头部显示的合计用sortflag=1,而底部的sortflag=-1
for(iCount=0;iCount< ds.Tables[0].Rows.Count -1;iCount++)
{
ds.Tables[0].Rows[iCount].BeginEdit();
ds.Tables[0].Rows[iCount].Item(ds.Tables("table").Columns.Count - 1) = 0;///???????????这句是错的!①
ds.Tables[0].Rows[iCount].EndEdit();
}
是用来给所有记录sortflag字段0值
for(iCount=0;iCount< ds.Tables[0].Rows.Count -1;iCount++)
{
ds.Tables[0].Rows[iCount]["SortFlag"] = 0;
}
ds.Tables[0].Rows[iCount].Item(ds.Tables[0].Columns.Count - 1)是可以的
而写成抽象类的时候就没有Item,而只有ItemArray 了?
是哪个概念理解有问题吗?请指点