Laden...

Sortierreihenfolge von Zeilen im DataGridView speichern

Erstellt von Lilhop vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.009 Views
L
Lilhop Themenstarter:in
6 Beiträge seit 2013
vor 10 Jahren
Sortierreihenfolge von Zeilen im DataGridView speichern

Ich habe folgendes Problem:

ich nutze ein DataGridView mit 5 Spalten und einer variierenden Anzahl von Zeilen. Mit einem Klick auf den Coloumn Header werden die Zeilen in der entsprechenden Spalte aufsteigend sortiert. Schön und gut.

Wie kann ich diese Eigenschaft nun abspeichern, nach welcher Spalte die Tabelle sortiert wurde, um beim nächsten Programmstart den gleichen Zustand zu bekommen?

B
357 Beiträge seit 2010
vor 10 Jahren

Indem du das Klick-Event abfängst, deine Einstellung speicherst, und beim Neustart wieder ausliest und setzt.

L
Lilhop Themenstarter:in
6 Beiträge seit 2013
vor 10 Jahren

Das ist schon einmal eine gute Idee, danke.

Nun stellt sich mir aber noch die Frage, wie ich diese Sortierung abspeichere. Habe dazu gegoogelt und bin nur darauf gestoßen, wie man die Sortierreihenfolge von Spalten selber speichert.



using System.Collections.Specialized;
using System.Windows.Forms;

namespace DragDrop {
   public partial class Form2 : Form {
      public Form2() {
         InitializeComponent();
         StringCollection GridRanks = Properties.Settings.Default.GridRanks;
         for (int i = 0; i < GridRanks.Count; i++) {
            int n = int.Parse(GridRanks[i]);
            dataGridView1.Columns[i].DisplayIndex = n;
         }
      }

      private void Form2_FormClosed(object sender, FormClosedEventArgs e) {
         StringCollection GridRanks = Properties.Settings.Default.GridRanks;
         GridRanks.Clear();
         foreach (DataGridViewColumn c in this.dataGridView1.Columns) {
            GridRanks.Add(c.DisplayIndex.ToString());
         }
      }
   }
}


Und im Programm .cs:



C#-Code:
using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace DragDrop {
   static class Program {
      /// <summary>
      /// Der Haupteinstiegspunkt für die Anwendung.
      /// </summary>
      [STAThread]
      static void Main() {
         Application.EnableVisualStyles();
         Application.SetCompatibleTextRenderingDefault(false);
         Application.Run(new Form2());
         Properties.Settings.Default.Save();
      }
   }
}


Ich wollte dann das GridRanks in GridRows abändern, aber habe das Problem, dass er Properties.Settings.Default.GridRanks; nicht findet, also schon das Properties nicht. Fehlt mir da irgend ein namespace, bzw.wo finde ich diese Properties bei mir?

4.942 Beiträge seit 2008
vor 10 Jahren

Du mußt natürlich dieses Property in den Settings selber anlegen (als UserSetting, damit dieser Wert auch geändert werden kann): entweder über die Projekteigenschaften -> Tab "Settings" oder aber im Ordner "Properties" auf Settings klicken.