Binding einer Class mit Anzeige aus DataTable?

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von xChRoNiKx.

    Binding einer Class mit Anzeige aus DataTable?

    Hallöchen,

    ich habe folgende Klasse:

    Spoiler anzeigen

    C#-Quellcode

    1. ​public class Settings : INotifyPropertyChanged
    2. {
    3. private string _datasource;
    4. private string _database;
    5. private string _username;
    6. private string _password;
    7. private string _status;
    8. private int _sprache;
    9. public string DataSource
    10. {
    11. get { return _datasource; }
    12. set
    13. {
    14. if (Equals(value, _datasource)) return;
    15. _datasource = value;
    16. OnPropertyChanged();
    17. }
    18. }
    19. public string Database
    20. {
    21. get { return _database; }
    22. set
    23. {
    24. if (Equals(value, _database)) return;
    25. _database = value;
    26. OnPropertyChanged();
    27. }
    28. }
    29. public string Username
    30. {
    31. get { return _username; }
    32. set
    33. {
    34. if (Equals(value, _username)) return;
    35. _username = value;
    36. OnPropertyChanged();
    37. }
    38. }
    39. public string Password
    40. {
    41. get { return _password; }
    42. set
    43. {
    44. if (Equals(value, _password)) return;
    45. _password = value;
    46. OnPropertyChanged();
    47. }
    48. }
    49. public int Sprache
    50. {
    51. get { return _sprache; }
    52. set
    53. {
    54. if (Equals(value, _sprache)) return;
    55. _sprache = value;
    56. OnPropertyChanged();
    57. }
    58. }
    59. [XmlIgnore]
    60. public string Status
    61. {
    62. get { return _status; }
    63. set
    64. {
    65. if (Equals(value, _status)) return;
    66. _status = value;
    67. OnPropertyChanged();
    68. }
    69. }
    70. public string GetConnectionString()
    71. {
    72. return $"Data Source={this.DataSource};MultipleActiveResultSets=true;User ID={this.Username};Password={this.Password}";
    73. }
    74. public Settings()
    75. {
    76. this.Status = $"[{DateTime.Now.ToShortTimeString()}]: Settings loaded.";
    77. }
    78. public void SaveToXML()
    79. {
    80. XmlSerializer xs = new XmlSerializer(typeof(Settings));
    81. TextWriter txtWriter = new StreamWriter("config.xml");
    82. xs.Serialize(txtWriter, this);
    83. txtWriter.Close();
    84. this.Status = $"[{DateTime.Now.ToShortTimeString()}]: Settings saved.";
    85. }
    86. public static Settings LoadFromXML()
    87. {
    88. if (!File.Exists("config.xml")) return new Settings();
    89. XmlSerializer xs = new XmlSerializer(typeof(Settings));
    90. using (Stream reader = new FileStream("config.xml", FileMode.Open))
    91. {
    92. return (Settings)xs.Deserialize(reader);
    93. }
    94. }
    95. public event PropertyChangedEventHandler PropertyChanged;
    96. //[NotifyPropertyChangedInvocator]
    97. protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    98. {
    99. var handler = PropertyChanged;
    100. if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
    101. }
    102. }


    Die die ganzen Werte da sind per Binding an Textboxen gebunden und nun würde ich gerne die Sprache auswählbar machen.
    Ich hole die Sprachen aus einer MSSQL Tabelle in eine DataTable per TableAdapter:



    C#-Quellcode

    1. ​tSpracheTableAdapter sprachetbl = new tSpracheTableAdapter();
    2. sprachetbl.Connection.ConnectionString = _settings.GetConnectionString();
    3. sprachetbl.Fill(reportsDS.tSprache);


    Ich möchte nun in einer ComboBox per Binding die Sprache auswählbar machen und den Wert der Sprache also "kSprache" als Sprache in meiner Settings Klasse speichern.
    Natürlich will ich das dann auch wieder laden aber irgendwie weiß ich nicht wie.

    Klar kann ich die ComboBox an die DataTable binden aber wie speicher ich dann den Wert in die Settingsklasse ohne viel Code? Und wie lade ich das am besten wieder?
    Stehe da grad auf dem Schlauch. Meine Textboxen wenn die sich ändern und ich auf meinen Save Button drücke werden ja in der xml für die Settings Klasse gespeichert.

    Hoffe einer versteht was ich da vorhabe.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „EaranMaleasi“ ()

    Ist natürlich problematisch, dass du zwei verschiedene Datenverarbeitungstechnologien verwenden willst.
    Ich finde: Wenn du schon ein Dataset hast, warum entwirfst du ausserdem eine selbstgebastelte Datenklasse?
    Das wäre doch viel einfacher als zusätzliche typisierte DataTable im typisierten Dataset untergebracht, oder?
    Die DataTable Setting (Benamung: Singular, ohne Prefix!) könnteste ja trotzdem woanners speichern/laden als inne Datenbank.