名为[column name]的列已属于此DataTable

时间:2010-08-25 13:49:44

标签: .net tsql datatable

private void BindFields()
{
    DataTable table = Globals.ConvertDataReaderToDataTable(DataProvider.GetFields());
    _fieldCount = table.Rows.Count;

    dataGrid.DataSource = table;
    dataGrid.DataBind();
}

由DotNetNuke平台提供的ConvertDataReaderToDataTable抛出此异常:

  

名为[column name]的列已属于此DataTable

我在不同的表中有相同名称的列,但它们是主/外键对,因此具有相同的值。你会怎么做才能解决这个问题?

3 个答案:

答案 0 :(得分:0)

您通常只使用数据源中的一个列。除此之外,你可以将其他一列作为别名。

仅使用其中一个副本

Select a.SomeColumn, b.OtherStuff
From TableA a
Inner Join TableB b
on a.SomeColumn = b.SomeColumn

或使用别名

Select a.SomeColumn, b.SomeColumn as SomeColumnB, b.OtherStuff
From TableA a
Inner Join TableB b
on a.SomeColumn = b.SomeColumn

答案 1 :(得分:0)

我只是用

DataTable dataTable = new DataTable();
dataTable.Load(dataReader);

而不是DotNetNuke的

DataTable dataTable = Globals.ConvertDataReaderToDataTable(dataReader);

我不再得到例外了。

答案 2 :(得分:0)

如果在SQL JOIN语句中选择了相同的列,则会发生这种情况。我通过从我的sql连接中删除重复列来解决此问题
改变这个      SELECT O.Section</b>,S.CurriculumTblCode, <b>S.Section ,S.SectionSettingTblCode FROM otf.ViewOneToFiveGroups O INNER JOIN SectionSetting S ON O.SectionSettingTblCode= S.SectionSettingTblCode


对此,只需删除重复的 S.Section

     SELECT <b>O.Section</b>,S.CurriculumTblCode,S.SectionSettingTblCode 
     FROM 
     otf.ViewOneToFiveGroups O 
     INNER JOIN SectionSetting S ON O.SectionSettingTblCode= 
     S.SectionSettingTblCode