2017-11-08 3 views
0

In vb.net oder C# DataGridViews gibt es eine integrierte Möglichkeit, einer ID immer eine Zeile zuzuweisen, selbst nachdem die Zeilen sortiert wurden. Abrufen von DataGridRow nach dem Sortieren von Zeilen

Mit

For Each row In DataGridView1.Rows 
    debug.writeline(row.cells(0).value) 
Next 

unterliegt die Reihen aktuellen Position und nicht die Position, die sie aufgenommen wurden.

Ich weiß, dass Sie eine ausgeblendete ID-Spalte hinzufügen und sie jedes Mal erhöhen können, wenn Sie eine Zeile hinzufügen, aber ich wusste nicht, ob es eine integrierte Möglichkeit dafür gibt.

bearbeiten

ich eine Liste von Werten, die die Datenrasteransicht ausfüllen kann die Rasteransicht bearbeitet werden und nach der Bearbeitung muss die Liste der Werte aktualisiert werden. Also, wenn Sie eine Zeile haben, die sagt "Toyota", "Gelb" und Sie ändern es zu "Toyota", "Rot" ID wollen den Index von "Toyota", "Gelb" zu "Toyota", "Rot"

Grundsätzlich eine SQL-Tabelle aber in der Liste (von string()) Form.

+0

Ich habe eine Liste von Werten, die füllen Aus der Datenrasteransicht heraus kann die Rasteransicht bearbeitet werden und nach der Bearbeitung muss die Werteliste aktualisiert werden. Also, wenn Sie eine Zeile haben, die sagt "Toyota", "Gelb" und Sie ändern es zu "Toyota", "Rot" ID wollen den Index von "Toyota", "Gelb" zu "Toyota", "Rot" .. Im Grunde eine SQL-Tabelle, aber in Form einer Liste (von String()). @o_O – Philip556677

+1

Wenn sich die Daten in einer Sammlung befinden, arbeiten Sie mit der Sammlung/Datenquelle und nicht mit dem Steuerelement. Mit Steuerelementen zeigen wir Daten für Benutzer an. – Plutonix

Antwort

0

(Wahrscheinlich) In einer ungebundenen DataGridView ist es wahrscheinlich, dass Sie HashCode als Id für jede Zeile verwenden können.

 public Form1() 
    { 
     InitializeComponent(); 

     dgv.Columns.Add(new DataGridViewTextBoxColumn()); 
     dgv.Columns.Add(new DataGridViewTextBoxColumn()); 

     dgv.Rows.Add("key1", "value1"); 
     dgv.Rows.Add("key2", "value2"); 
     dgv.Rows.Add("key3", "value3"); 

     Debug.Print("original"); 
     dispHash(); 

     /*sorting*/ 
     dgv.Sort(dgv.Columns[1], ListSortDirection.Descending); 

     Debug.Print("sorted"); 
     dispHash(); 

     /*edit*/ 
     dgv[1, 2].Value = "changed"; 
     Debug.Print("edited"); 
     dispHash(); 

     /*deleted*/ 
     dgv.Rows.Remove(dgv.Rows[1]); 
     Debug.Print("removed"); 
     dispHash(); 

     /*add*/ 
     dgv.Rows.Add("key4", "value4"); 
     Debug.Print("add"); 
     dispHash(); 
    } 

    private void dispHash() 
    { 
     foreach (DataGridViewRow row in dgv.Rows) 
     { 
      Debug.Print(row.Cells[0].Value + ":" + row.GetHashCode()); 
     } 
    } 

original key1: 41014879 key2: 3.888.474 key3: 25209742 : 26966483

sortiert key3: 25209742 key2: 3.888.474 key1: 41014879 : 26966483

bearbeitet key3 : 25209742 schlüssel2: 3888474 schlüssel1: 41014879 : 26966483

entfernt key3: 25209742 key1: 41014879 : 26966483

hinzufügen key3: 25209742 key1: 41014879 key4: 31884011 : 26966483

Verwandte Themen