Laden...

DataSet-Tabelle eine Spalte hinzufügen

Erstellt von f.ritz vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.475 Views
f.ritz Themenstarter:in
341 Beiträge seit 2004
vor 18 Jahren
DataSet-Tabelle eine Spalte hinzufügen

Hallo!

Folgendes Szenario: Es gibt eine Tabelle, mit der Spalte namens "Farben" diese enthält int-Werte die eine enumeration-Auswahl darstellt, d.h wenn der Wert der Zelle 0 dann entspricht es einem String "Rot", 2 -> "Grün", 3-> "Blau" usw.. Das heißt also, dass wenn ich die Tabelle einfach mit einem DataSet lese und mit einem DataGrid darstelle, dann stehen da nur Zahlen in der Spalte.
Ich möchte aber, dass anstatt dieser Spalte mit Ziffren eine Spalte mit Strings steht die, die Farben beschreiben.

Was kann man da machen?

4.506 Beiträge seit 2004
vor 18 Jahren

Hallo f.ritz,

Wieso willst Du unbedingt in dem DataSet den String stehen haben? Ich würde eine Enumeration verwenden, die die Int-Werte in Strings abbildet.



public enum Farben
{
   Rot = 0,
   Gruen = 2,
   Blau = 3
   //...
}


Dann kann man mittels Casting immer den entsprechenden Enum-Wert erhalten:



Farben aktuelleFarbe = (Farben) 2;


Dann hättest Du das Problem umgangen.

Wenn Du aber immer noch zwingend einen String in der DataTable bzw. DataSet stehen haben möchtest, dann musst Du nach dem erstellen der Tabellen immer eine zusätzliche Spalte manuell hinzufügen, und dann Zeile für Zeile dort dementsprechenden Eintrag vornehmen (z.B. Switch-Case).

Ciao
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

f.ritz Themenstarter:in
341 Beiträge seit 2004
vor 18 Jahren

Im Prinzip geht es mir nur darum, die Daten in einem DataGrid Benutzerfrundlich darzustellen. So dass ich in der Spalte "Farben" nicht Ziffern stehen sondern "lesbare" Farbenwerte.
Das problem habe ich nun mit einem typisierten Dataset gelöst, indem ich im XSD-Schema eine neue Spalte hinzufüge und diese dann entsprechend(wie du es schon gesagt hast) mit Werten fülle.

S
127 Beiträge seit 2004
vor 18 Jahren

Hallo zusammen,

Wie bekommt denn das Dataset seine Daten?

Ich würde das in DB machen mit einer Def Tabelle, so wärst du auch flexsibel, wenn auf ein mal die Farbe Gelb mit auf genommen werden soll.

Datengrundlage des Datasets:
Select Table1.*, DefTable1.Bez From Table1, DefTable1 Where Table1.FarbeID = DefTable1.ID;

Hat aber einen Nachteil, die Update Funktion des Datasets klappt nicht mehr da die Datengrundlage auf mehrere Tabellen basiert.

Das mit der Spalte im Code hinzufügen halte ich für nicht so performat. Bei 100 Datensätzen mag das gehen.


Public enum Farben
{
Rot = 0;
Grün = 2;
Blau = 3;
}
...
myDS.Tables("x").Columns.Add("<Feldbezeichnung>",GetType(String));
DataRow myRow;
For each myRow in myDS.Tables("x").Rows
{
   myRow("<Feldbezeichnung>") = (Farben) myRow("FarbenID");
}
myDS.AcceptChanges();
...

Enschuldige wenn die Syntax nicht ganz richtig ist aber isch schreibe mehr VB.Net 🙁