2016-10-17 3 views
-1

Ich versuche, eine Gridview von einer Datenquelle basierend auf einem SQL SELECT zu binden.bind gridview, wenn die Spalte nicht existiert

Manchmal ist jedoch eine Spalte in der Datenquelle nicht vorhanden, abhängig von den Daten, die von der Anweisung zurückgegeben werden. Ich möchte nur eine Gridview.

Wie würde ich die Bindung so behandeln, dass kein Fehler auf GridView1.DataBind() geworfen wird?

Antwort

2

Nicht ganz sicher, wie Sie dies tun, aber man kann so etwas Spalten mit Code überprüfen:

DataTable dt = GetMyDataFromDatabase(); 
if (dt.Rows.Count > 0) 
{ 
    if (!dt.Columns.Contains("MyColumn")) 
    { 
     //do whatever, maybe add the missing column?... 
     dt.Columns.Add("MyColumn", typeof(String)); 
    } 
} 

Die andere Möglichkeit wäre, nicht die Spalten auf der ASPX zu definieren und hat alles definiert im Codebehind von RowDataBound und Ereignisse.

1

Der einfachste Weg ist sicherzustellen, dass die Spalten in jedem Abfrageergebnis immer vorhanden sind. Sie können die Fehler vermeiden, indem Sie bei Bedarf Dummy-Spalten einfügen.

Wenn zum Beispiel das Ihre Standardabfrage ist

SELECT columnA, columnB, columnC FROM yourDB 

Sie können eine Dummy-Spalte wie folgt einfügen, wenn es columnB

SELECT columnA, NULL AS columnB, columnC FROM yourDB 

fehlt oder wenn Sie columnA fehlen und es ist eine ganze Zahl das muss einen Wert haben

SELECT 0 AS columnA, columnB, columnC FROM yourDB 

Eine andere Möglichkeit ist es Verwenden Sie NUR AutoGenerateColumns="true" in der GridView. Dadurch haben Sie jedoch weniger Kontrolle über Design und Layout.