Benutzer mit den meisten Antworten
Dynamische Ihnhalte ins Silverlight Datagrid laden und bearbeiten

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%20actionSchon 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- Als Antwort markiert Robert Breitenhofer Freitag, 4. Mai 2012 08:18
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 Falsewü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 CommunityDienstag, 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 CommunityDienstag, 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%20actionSchon 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- Als Antwort markiert Robert Breitenhofer Freitag, 4. Mai 2012 08:18
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,
RobertRobert Breitenhofer, MICROSOFT
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