2016-08-03 44 views
6

Ich arbeite an einem Legacy-Windows-Formularprojekt, das ich auf Webformulare migriere.Nicht vorhandene Spalte im Datensatz ignorieren (gebundenes Feld)

Es gibt einen Datensatz, den ich an eine Gridview binde.

Ich habe alle Boundfields gemacht, so dass die Gridview die Spalten nicht automatisch erzeugt. Immer wenn ich dieses Dataset an das Raster binde, fehlen einige Spalten im Dataset, sodass Fehler bei nicht vorhandenen Spalten verursacht werden.

Gibt es eine Möglichkeit, fehlende Spalten in gebundenen Feldern zu ignorieren? Wie, entfernen Sie die gebundene Spalte, wenn es nicht existiert ... oder einfach ignorieren?

+0

Warum binden Sie sie, wenn sie nicht existieren? Auch würde es helfen, wenn Sie etwas Code freigeben würden – lokusking

+0

Es ist, weil ich drei verschiedene Datensätze habe. Einige Spalten sind in allen vorhanden, andere nicht. Ich wollte das machen, damit ich nicht drei getrennte Gridviews machen muss. – Phiter

+0

Hmmm okay. Ist die automatische Generierung von Spalten in diesen Grids eine Option? Ist Objektbindung eine Option? Hast du die Bindung im Designer oder im Code gemacht? – lokusking

Antwort

0

Ich hatte einen anderen Ansatz zu verwenden:

ich die gridview setzen keine Spalten und autogeneratecolumns zu false haben.

Dann habe ich eine XML mit der Liste aller möglichen Spalten (dies ist ein XML, nicht asp.net Markup)

<Grid ID="grdSenha"> 
     <BoundField HeaderText="Status" /> 
     <BoundField DataField="Flg_Imprimiu" HeaderText="Imprimiu?" Visible="True" /> 
     <BoundField DataField="Nom_Localdest" HeaderText="Local Descarga" Visible="True" /> 
     <BoundField DataField="Dsc_Localdest" HeaderText="Descrição" Visible="True" /> 
     <BoundField DataField="Cod_Produto" HeaderText="Cod Prod" Visible="False" /> 
     <BoundField DataField="Dsc_Produto" HeaderText="Descrição Produto" Visible="True" /> 
     <BoundField DataField="Qtd_Transport" HeaderText="Qtde" Visible="True" /> 
     <BoundField DataField="Cod_Transport" HeaderText="Cod Trans" Visible="False" /> 
     [...] 
</Grid> 

Dann in meinem Code, ich aus der XML wählen würde nur die Spalten in meiner Datenquelle (mit dem DataField als Schlüssel), dann erstellen Sie die gebundenen Felder entsprechend.

Es funktioniert perfekt.