![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Elite
![]() Registriert seit: 14.11.1999
Alter: 39
Beiträge: 1.429
|
![]() Hallo!
Ich schreibe gerade eine Applikation, bei sich für jeweils spezielle Userkreise spezielle Items öffnen. Es gibt für die Items eine eigene Datenbank, die User-Berechtigungen erfolgen über eine eigene Zentralkomponente, die ich eingebunden habe, sprich ich setze das ganze dynamisch in der Applikation zusammen und es kann sich für jeden eine eigene individuelle Zusammenstellung ergeben. Die Items werden häufig geändert, auch die Nutzer und Berechtigungen, aber es sollte nicht jede Änderung zu einem neuen SW-Rollout führen (daher sind die Items ja in einer DB). Allerdings kann der User jetzt auch zu seinen Items individuelle Einstellungen treffen (ausblenden[Ja/Nein],Reihenfolge[Zahl]). Für mich stellt sich jetzt die Frage, wo ich diese Einstellungen speichern soll, in der config oder muss ich wirklich eine neue DB dafür aufreißen? Mir fehlt leider noch immer der .Net-Grundkurs, aber ich hätte mir vorgestellt, ich kann, sobald der Benutzer für ein Item eine Einstellung trifft (z.b. in interessiert von allen Items nur das unterste, er will aber nicht immer 2 A4-Seiten scrollen, kriegt aber aus verwaltungstechnischen Gründen keine eigene Gruppe) ich in der App.config eine Struktur in den Usersettings hätte, die in etwa so aufgebaut wäre: Code:
<usersettings> <setting name="ignore"> <value = "1" /> <value = "2" /> <value = "3" /> <value = "4" /> <value = "5" /> <value = "8" /> </setting> </setting> <setting name = "Reihenfolge"> <value = "3" /> <value = "2" /> <value = "4" /> <value = "6" /> <value = "5" /> <value = "1" /> </setting> </usersettings> ps: Falls sich jemand unter meiner latenten Beschreibungsschwäche leidet, versuche ich noch ein anderes Beispiel: Jeder User kriegt ein Grid (Excel-Sheet), wobei jeder andere columns (Spalten) hat. Jeder User soll aber seine Spalten indiviudell reihen können und sie müssen beim nächsten Start so wiederhergestellt werden. |
![]() |
![]() |
![]() |
#2 |
Senior Member
![]() |
![]() Hallo,
also so weit ich weiß ist es in .net möglich objekte einfach zu serialisieren, sprich einfach das ganze object weg zu schreiben da gibts mehrere Serializer (ich hab mal was mit dem XmlSerializer gemacht) geht eigentlich ganz gut, eventuell musst du mal google anstarten.. ich glaube das ist in etwa das was du machen willst... mfg Bernd |
![]() |
![]() |
![]() |
#3 |
Hero
![]() Registriert seit: 04.09.2001
Beiträge: 894
|
![]() hallo,
grundsätzlich sollte man "user settings" im isolated storage des users speichern, nicht in der "app.config", weil auf diese hat man unter z.B. Vista kein Schreibrecht ohne Admin Rechte, außerdem ist es "good practice". Da deine Settings im XML Format aufgebaut sind, würde ich da keinen Klasse als XML rausserialisieren sondern direkt ein z.B. XmlDocument, welches eine .Save() Methode bereitstellt. Ist etwas schwierig, genauer zu helfen, da die Anfrage relativ umfassend aber ungeau ist. Bei konkreten Fragen: Nur her damit! ![]() Ich verwende für einen Applikation, welche für einzelen User individuelle Einstellungen enthalten kann sog. "Profile". Diese Profile sind in einer DB abgelegt z.B. in einer VarChar(Max) oder Xml Spalte => eine gute imho. sogar bessere Alternative zum Isolated Storage, weil du in deinem Fall ja bereits eine DB verwendest. fg hannes |
![]() |
![]() |
![]() |
#4 | |
Elite
![]() Registriert seit: 14.11.1999
Alter: 39
Beiträge: 1.429
|
![]() Zitat:
Der Hinweiß mit der app.config ist natürlich gut, so weit habe ich bis dato nicht gedacht. Genauere Fragen hätte ich nur mal jene nach einem Beispiel, wie ich in den "isolated storage" des users schreibe und wenn fürs xml-schreiben ein Code-schnipsel abfällt wäre ich auch dankbar (xml habe ich noch nicht unter C# angesehen, allerdings wirds vermutlich nicht so komfortabel wie unter Dome ablaufen.) |
|
![]() |
![]() |
![]() |
#5 |
Jr. Member
![]() |
![]() Hi,
also ich hab mir angewöhnt Settings, die ich auch in Datenbanken ablegen möchte gleich als DataTable zu erzeugen. DataTables kann man leicht serialisieren und als XML Datei wegschreiben. Kleines Beispiel (DataTable mit Ignore Values im Isolated User Store speichern und wieder laden)... Settings erzeugen und speichern... Code:
// Create DataTable for Settings DataTable mySettings = newDataTable("Ignore"); mySettings.Columns.Add("Value", typeof(System.Int32)); // Add Test Settings mySettings.Rows.Add(newobject[1] { 1 }); mySettings.Rows.Add(newobject[1] { 2 }); mySettings.Rows.Add(newobject[1] { 3 }); // Create Isolated Storage Stream IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Assembly, null, null); IsolatedStorageFileStream myIsolatedStream = newIsolatedStorageFileStream("MyConfigFile.xml", FileMode.Create, isoStore); // Write to Isolated Storage mySettings.WriteXml(myIsolatedStream, XmlWriteMode.WriteSchema); // Close Stores myIsolatedStream.Close(); isoStore.Close(); Code:
// Create Isolated Storage Stream IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Assembly, null, null); try { // Open Config File IsolatedStorageFileStream myIsolatedStream = newIsolatedStorageFileStream("MyConfigFile.xml", FileMode.Open, isoStore); // Create Settings Table DataTable mySettings = newDataTable("Ignore"); mySettings.ReadXml(myIsolatedStream); // Read 1. Ignore Setting MessageBox.Show("First Ignore Value is " + mySettings.Rows[0]["Value"].ToString()); myIsolatedStream.Close(); } catch (Exception ex) { MessageBox.Show("Error. File not found or error reading config file. " + ex.ToString()); }
____________________________________
lg Yoghurt -- Rettet unsere Wälder, esst mehr Biber! |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|