当前位置: 代码迷 >> C# >> 关于自定义DataTable添加新列的有关问题(C#)
  详细解决方案

关于自定义DataTable添加新列的有关问题(C#)

热度:106   发布时间:2016-05-05 04:53:21.0
关于自定义DataTable添加新列的问题(C#)
对于Datatable,我有个疑问,麻烦大家帮忙分析一下。有两个小问题,具体如下:
我自定义了一个Datatable类型——TradeDataTable,这个是通过xsd与后台数据库相互关联的。然后我在使用的时候,自己又对这种类型的对象tradeTable用代码形式添加了一个新列,然后TradeDataTable  newTable=tradeTable.Clone();这句话居然就会报错,提示类型不匹配;奇怪的是DataTable a  newTable=tradeTable.Clone()居然是对的。对于一个DataTable类型变量,添加列是不会改变其类型的,因为Debug.WriteLine(tempTable.GetType())输出的依然是TradeDataTable。但是TradeDataTable  newTable=tradeTable.Clone();为什么会报错呢?
而且
IgnoreTradesTable = new TradeDataTable();
 Debug.WriteLine(IgnoreTradesTable.Columns.Count);
 DataColumn newCol = new DataColumn();
newCol.DataType = typeof(int);
 newCol.ColumnName = "specialColumn";
tempTradesTable.Columns.Add(newCol);//这里在执行时候提示错误,说specialColumn已经存在。纳闷的是这列根本没有,根据输出的列数判断的,它铁定没有这一列,但错误提示说它已有这一列了。为什么
------解决思路----------------------
一般来说要先判断

if(tempTradesTable.Columns["specialColumn"]==null){
DataColumn newCol = new DataColumn();
newCol.DataType = typeof(int);
 newCol.ColumnName = "specialColumn";
tempTradesTable.Columns.Add(newCol);
}

------解决思路----------------------
先判断tempTradesTable.Columns.Contans("specialColumn"),再add

tradeTable.Clone();方法你是否重写过?
如果调用的父类的方法,它输出的是DataTable类型
  相关解决方案