首页 新闻 会员 周边

DataTable列“X”不属于表

0
悬赏园豆:50 [已关闭问题] 关闭于 2010-04-09 10:17

 

 private DataTable CovertDataType(DataTable orgDataTable, string colNames, string convertCol, YstPack.Common.ColumnType convertDataType)
        {
            DataTable dt = new DataTable();
            //克隆表结构
            dt = orgDataTable.Clone();
            foreach (DataColumn column in dt.Columns)
            {
                if (column.ColumnName == convertCol)
                {
                    //修改列类型
                    column.DataType = typeof(Guid);
                }
            }
            string[] colArry = colNames.Split(',');
            foreach (DataRow dr in orgDataTable.Rows)
            {
                DataRow newdr = dt.NewRow();
                foreach (string str in colArry)
                {
                    if (str == convertCol)//转换列数据类型
                    {
                        switch (convertDataType)
                        {
                            case YstPack.Common.ColumnType.唯一标识:
                                newdr[str] = new Guid(dr[str].ToString());
                                break;
                            default:
                                break;
                        }
                    }
                    else
                    {
                        newdr[str] = dr[str];//不需要转化,直接赋值,但是这里就抛出异常!
                    }
                }
                dt.Rows.Add(newdr);
            }
            return dt;
        }

 

代码
private DataTable CovertDataType(DataTable orgDataTable, string colNames, string convertCol, YstPack.Common.ColumnType convertDataType)
{
DataTable dt
= new DataTable();
//克隆表结构
dt = orgDataTable.Clone();
foreach (DataColumn column in dt.Columns)
{
if (column.ColumnName == convertCol)
{
//修改列类型
column.DataType = typeof(Guid);
}
}

string[] colArry = colNames.Split(',');

foreach (DataRow dr in orgDataTable.Rows)
{
DataRow newdr
= dt.NewRow();
foreach (string str in colArry)
{
if (str == convertCol)//转换列数据类型
{
switch (convertDataType)
{
case YstPack.Common.ColumnType.唯一标识:
newdr[str]
= new Guid(dr[str].ToString());
break;
default:
break;
}
}
else
{

newdr[str]
= dr[str];//不需要转化,直接赋值,但是这里就抛出异常!
}
}
dt.Rows.Add(newdr);
}
return dt;
}

 

运行 foreach (string str in colArry)循环第一次能成功,但是第二次就报列“X”不属于表异常

 

问题补充: 异常就是列不属于表! 终于找到问题答案了,原来是由于自己的一个低级错误造成的!在循环都二次时,字符串前面多了一个空格,所以……教训啊!
feiyang的主页 feiyang | 初学一级 | 园豆:150
提问于:2010-04-08 20:08
< >
分享
所有回答(1)
0

把异常放出来啊

小AI | 园豆:354 (菜鸟二级) | 2010-04-08 23:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册