2 Stimmen

Eine Spalte namens [Spaltenname] gehört bereits zu dieser DataTable

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

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

Der ConvertDataReaderToDataTable, der von der DotNetNuke-Plattform bereitgestellt wird, löst diese Ausnahme aus:

Eine Spalte namens [Spaltenname] gehört bereits zu dieser DataTable

Ich habe zwar Spalten mit denselben Namen in verschiedenen Tabellen, aber sie sind Primär-/Fremdschlüsselpaare und haben daher dieselben Werte. Was würden Sie tun, um dieses Problem zu lösen?

1voto

Aman G Punkte 41

Dies geschieht, wenn Sie in Ihren SQL JOIN-Anweisungen die gleiche Spalte ausgewählt haben. Ich habe dieses Problem behoben, indem ich die doppelte Spalte aus meinem SQL-Join wie folgt entfernt habe
Dies ändern

    SELECT O.Section,S.CurriculumTblCode, 
    S.Section ,S.SectionSettingTblCode FROM 
    otf.ViewOneToFiveGroups O 
    INNER JOIN 
    SectionSetting S ON O.SectionSettingTblCode= S.SectionSettingTblCode`

Dazu müssen Sie nur das Duplikat entfernen S.Abschnitt

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

0voto

Ich habe einfach

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

anstelle von DotNetNuke's

DataTable dataTable = Globals.ConvertDataReaderToDataTable(dataReader);

und ich bekomme die Ausnahme nicht mehr.

-1voto

Anthony Pegram Punkte 119149

Normalerweise verwenden Sie nur eine der Spalten in der Datenquelle. Andernfalls würden Sie eine der anderen Spalten mit einem Alias versehen.

Nur eines der Duplikate verwenden

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

Oder einen Alias verwenden

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X