locked
Dynamische Ihnhalte ins Silverlight Datagrid laden und bearbeiten RRS feed

  • Frage

  • Ich habe folgendes Problem.

    Ich bekomme eine Liste. Diese enthält mehrere Objekte von dennen jedes Objekt eine eigene Liste (List<Dictionary<string, objekt>) enthält. Das Dict sieht z.B. so aus: Key[Name] Value [Musterman].

    Das Problem ist, dass diese Liste generisch ist. Also <Dictionary<string, objekt> die (Value) Werte können jedesmal von unterschiedlichen Typ sein. Und auch die Key-Werte können jedesmal anders sein.

    Ich möchte diese Listenelemente in einer  Silverlight Datagrid darstellen und bearbeiten können. Die Spaltennamen und Typen müssen sich aus den Key-Werten ergeben, denn ich möchte z.B. einen Datepicker, Combobox usw. haben.

    Wie kann ich das realisieren. Im Internet habe ich nur die Beispiele mit einem Objekt mit festen Properties gefunden, das nütz mir nicht.

    Danke euch im Vorraus.



    • Bearbeitet atomic2000 Dienstag, 24. April 2012 15:27
    Dienstag, 24. April 2012 15:21

Antworten

  • Hi,

    DataTable ist in SL nicht verfügbar.

    upps :) Dass es um Silverlight geht, hatte ich glatt nochmal übersehen.

    Ich wäre schon glücklich, wernn ich die Elemente als Strings anzeigen könnte.

    Wie gesagt, das eigentliche Problem ist deine unglückliche Key/Value Liste. Natürlich kannst Du die einfach als Datenquelle für ein DataGrid Control nehmen, dann hast Du aber wahrscheinlich nicht das, was Du wolltest.

    Oder ist ein DataGrid für mein Vorhaben (Listenelemente wie im Excel  editieren) nicht geeignet?

    Eigentlich schon. Deine Liste aber eher nicht.

    Ich möchte sowas  in der Art machen:

    http://demo.componentone.com/Silverlight/ControlExplorer/#DataGrid/See%20it%20in%20action

    Schon klar.

    Ist das mit einem eigenen Cotrol/ Grid gemacht worden oder mit DataGrid?

    Da die Komponentenhersteller ihre eigenen Grids verkaufen wollen, ist es wohl eher nicht mit dem Standardcontrol, sondern mit einer Erweiterung gemacht. Für dein Vorhaben solltest Du das aber nicht brauchen.

    Schau mal hier, da findest Du ein Beispiel, dass deine Anforderungen eigentlich ziemlich genau treffen sollte.

      http://www.ditran.net/silverlight-datagrid-dynamic-columns-adding-code-behind-sortabilities

      http://forums.silverlight.net/p/147116/329448.aspx


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 24. April 2012 20:04

Alle Antworten

  • Hi,

    das DataGrid wird hierfür nicht das richtige sein, es sei denn, Du würdest die Elemente rumdrehen, so dass aus den einzelnen Key/Value Paaren dann Zeilen mit Spalten werden. Aus:

    Key   Value
    Abc   Hallo Welt
    Def   01.01.2012
    Xyz   True
    Abc   Noch einer
    Def   31.12.2012
    Xyz   False

    würde dann

    Abc          Def         Xyz
    Hallo Welt   01.01.2012  True
    Noch einer   31.12.2012  False
    ...
    

    Zudem brauchst Du dann in deiner Liste noch die Angabe, welcher Datentyp das sein soll. Denn eine automatische Ermittlung wird ggfs. schwierig, es sei denn, die Value Eigenschaft beinhaltete das Objekt intern mit dem richtigen Datentyp.

    Wenn Du die Daten nicht rumdrehen willst, wäre es einfacher, sich selbst entsprechende Controls zu bauen, bei denen Du dann bspw. per Select Case ... oder If ElseIf ElseIf ... unterscheidest und in eine Controlcollection die passenden Controls (DatePicker, TextBox, CheckBox, ...) einfügst. Den Key kannst Du über die Tag Eigenschaft des Controls mitgeben, damit man beim Speichern auch den richtigen Wert aktualisiert.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 24. April 2012 15:47
  • Danke für die schnelle Antwort.

    Die Elemente/List die ich bekomme, kann ich verändern wie ich will.

    Der Value-Wert ist ein Objekt, also z.B. " Value    {26.01.2012 15:00:02}    object {System.DateTime}".

    Ich habe die DataGrid genohmen, da dieses out of the box schon viele nützliche Funktionen bietet.

    Dienstag, 24. April 2012 16:08
  • Hi,

    wenn pro Key innerhalb einer Collection dann zumindest immer derselbe Datentyp enthalten ist, würde ich dir dann die Variante Collection -> DataTable mit entsprechender Umkehr der Elemente in die oben gezeigte Struktur empfehlen. Damit sollte das schon gehen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 24. April 2012 16:18
  • DataTable ist in SL nicht verfügbar.

    Geht es evtl auch anders? Ich wäre schon glücklich, wernn ich die Elemente als Strings anzeigen könnte.

    Oder ist ein DataGrid für mein Vorhaben (Listenelemente wie im Excel  editieren) nicht geeignet?

    Ich möchte sowas  in der Art machen:

    http://demo.componentone.com/Silverlight/ControlExplorer/#DataGrid/See%20it%20in%20action

    Ist das mit einem eigenen Cotrol/ Grid gemacht worden oder mit DataGrid?

    • Bearbeitet atomic2000 Dienstag, 24. April 2012 18:40
    Dienstag, 24. April 2012 17:53
  • Hi,

    DataTable ist in SL nicht verfügbar.

    upps :) Dass es um Silverlight geht, hatte ich glatt nochmal übersehen.

    Ich wäre schon glücklich, wernn ich die Elemente als Strings anzeigen könnte.

    Wie gesagt, das eigentliche Problem ist deine unglückliche Key/Value Liste. Natürlich kannst Du die einfach als Datenquelle für ein DataGrid Control nehmen, dann hast Du aber wahrscheinlich nicht das, was Du wolltest.

    Oder ist ein DataGrid für mein Vorhaben (Listenelemente wie im Excel  editieren) nicht geeignet?

    Eigentlich schon. Deine Liste aber eher nicht.

    Ich möchte sowas  in der Art machen:

    http://demo.componentone.com/Silverlight/ControlExplorer/#DataGrid/See%20it%20in%20action

    Schon klar.

    Ist das mit einem eigenen Cotrol/ Grid gemacht worden oder mit DataGrid?

    Da die Komponentenhersteller ihre eigenen Grids verkaufen wollen, ist es wohl eher nicht mit dem Standardcontrol, sondern mit einer Erweiterung gemacht. Für dein Vorhaben solltest Du das aber nicht brauchen.

    Schau mal hier, da findest Du ein Beispiel, dass deine Anforderungen eigentlich ziemlich genau treffen sollte.

      http://www.ditran.net/silverlight-datagrid-dynamic-columns-adding-code-behind-sortabilities

      http://forums.silverlight.net/p/147116/329448.aspx


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 24. April 2012 20:04
  • Hallo atomic2000,

    Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
    Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.

    Grüße,
    Robert


    Robert Breitenhofer, MICROSOFT  Twitter Facebook
    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Freitag, 4. Mai 2012 08:19