Announcement

Collapse
No announcement yet.

DataSet-Tabelle eine datenabhängige Spalte hinzufügen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DataSet-Tabelle eine datenabhängige 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?

  • #2
    Hallo Euegen,
    das wird mit "Bordmitteln" von C# nicht machbar sein.
    Dazu benötigst Du nämlich für das DataGrid eine ComboBox-Spalte und die gibt es standardmäßig nicht.
    Ich glaube erst ab C# 2.0, im neuen DataGridView-Control, ist sie wohl enthalten, bin mir aber jetzt auch nicht sicher.
    Du findest aber im Netz genug Beispiele wie Du das DG um eine ComboBoxSpalte erweitern kannst.
    Wenn die da ist, kannst Du damit Deine gewünschte Darstellung problemlos realisieren.

    Gruß
    Carste

    Comment


    • #3
      Hallo,
      >..das wird mit "Bordmitteln" von C# nicht machbar sein.
      doch - alle Anforderungen lassen sich bereits mit .NET 1.x umsetzen. Es gibt sogar mehrere Optionen:
      <br>
      a) Der DataTable im DataSet wird eine "berechnete Spalte" hinzugefügt, um den "sprechenden" Namen aus einer Nachschlage-Tabelle über den Fremdschlüssel (<b>Parent</b>) einzutauschen:
      <code>
      dataSetRelationJOIN1.Tables["KDN"].Columns.Add("Anrede", typeof(string),
      "Parent(ANR_KDN).Anrede");
      </code>
      Die neue Spalte wird erst auf der Clientseite in das DataSet dazugemisch und ist völlig transparent.
      <br>
      b) Im DataGrid wird eine ComboBox nachgerüstet, wozu dazu eine eigene <i>DataGridTableStyle</i>-Klasse geschrieben wird, um dort einen <i>DataGridColumnStyle</i>-Ableger (die Suche hier im FORUM listet einige Fundstellen auf) unterzubringen (der Aufwand hält sich in Grenzen). Innerhalb der überschriebenen <b>Paint</b>-Methode kann man die darzustellende Form völlig in eigener Regie festlegen.
      &#10

      Comment


      • #4
        Hallo Andreas,
        >..das wird mit "Bordmitteln" von C# nicht machbar sein. doch - alle Anforderungen lassen sich bereits mit .NET 1.x umsetzen.
        Es ist natürlich völlig richtig, dass es mit Bordmitteln von .NET 1.x umzusetzen geht.
        Ich meinte halt nur, dass es mit dem "Bordmitteln" des DataGrides alleine unter .NET 1.x nicht geht.
        War leider etwas sehr unklüglich von mir formuliert.

        Carste

        Comment


        • #5
          Danke für die Hilfe!
          Aber das Problem habe ich mit einem Typisierten DataSet gelöst, indem ich im XSD-Schema neue Spalte einfüge und diese dann mit entsprechenden Werten fülle

          Comment

          Working...
          X