Laden...

DataGridView einzeln reihen

Erstellt von abcde vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.250 Views
A
abcde Themenstarter:in
4 Beiträge seit 2010
vor 13 Jahren
DataGridView einzeln reihen

Hallo,

Folgender Code habe ich bis jetzt verwendet, um aus einer MySQL Datenbank Testdatensätze in ein DataGrid zu schreiben.


private void Form1_Load(object sender, EventArgs e)
        {
            string constr = "SERVER=raw;" +"DATABASE=db_test;" +"UID=test;" +"PASSWORD=xyz;";
            MySqlDataAdapter sqlAdapter = new MySqlDataAdapter("SELECT * FROM ta_test WHERE 1=1", constr);

            DataTable sqlData = new DataTable();
            sqlAdapter.Fill(sqlData);
            m_table.DataSource = sqlData;
          

        }

Die Datensätze werden ganz schön angezeigt. Funktioniert also alles soweit. Nun möchte ich die Möglichkeit haben, die Datensätze im DatenGridView zu reihen. Sprich festzulegen Datensatz 1 steht an zweiter Stelle, Datensatz 2 steht an dritter Stelle, Datensatz 3 steht an erster Stelle... usw.

Finde hierfür keine passende Möglichkeit, bzw. habe auch keine Idee wie ich sowas angehen könnte.

hoffe jemand kann mir helfen!

Vielen Dank!

P
67 Beiträge seit 2008
vor 13 Jahren

Ich kann jetzt leider nicht genau sagen, wie du das machen willst. Ich mein, eine Sortierung (nehme mal an das meintest du mit "reihen" ?! falls nicht.. ignoriere diesen Post) ist eine Anordnung von vorhandenen Daten.
Kannst du zeigen, wie die Tabelle aufgebaut ist? Oder kannst du sagen wonach du sortieren willst?
Vielleicht hilft dir ja schon diese Seite, wo die ORDER-BY-Klausel beschrieben wird, welche du in deinem SQL-Query unterbringen kannst

Religionskriege sind Konflikte zwischen erwachsenen Menschen, bei denen es darum geht, wer den cooleren, imaginaeren Freund hat

A
350 Beiträge seit 2010
vor 13 Jahren

Hi,

hast du eine ID für jeden Datensatz ?
Wenn ja , kannst du im Datagrid eine Spalte definieren wo genau diese Nummer eingetragen wird(Evtl. unsichtbar für den User)

Und schon hättest du deine Zuordnung

Aber ne andere Frage : Wofür brauchst du das ? Durch das Binden kannst du auf dem Datagrid arbeiten welches nur auf deine DataTable verweist.
Effektiv musst du nichts weiter machen als nach möglichen Änderungen zu speichern

Siehe LINK

A
350 Beiträge seit 2010
vor 13 Jahren

Oh beim zweiten mal lesen hab ich es nun begriffen : Du willst quasi wie bei Drag and Drop eine Zeile hinter eine andere einreihen können ja ?

A
abcde Themenstarter:in
4 Beiträge seit 2010
vor 13 Jahren

Sorry falls ich mich falsch ausgedrückt habe.

Oh beim zweiten mal lesen hab ich es nun begriffen : Du willst quasi wie bei Drag and Drop eine Zeile hinter eine andere einreihen können ja ?

Genau so ist es!
Wobei es, wenns schwer zu realisieren ist, nicht über Drag and Drop sein muss. Kann ja noch ein weiteres Feld mit nem Pfeil nach oben und nem Pfeil nach unten machen und man kann dann so nach oben oder nach unten verschieben.

Drag and Drop wäre natürlich fein.

Danke für die Lösungen 😃

A
350 Beiträge seit 2010
vor 13 Jahren

Hi ,

teste mal bitte folgendes :

Füge einen Button ein

In den Eventhandler packste bitte folgendes:

foreach (DataGridViewRow row in dataGridView1.SelectedRows)
            {
                DataGridViewRow tempRow = row;
                int NextRow = dataGridView1.Rows.GetPreviousRow(row.Index, DataGridViewElementStates.None);
                dataGridView1.Rows.Remove(row);
                dataGridView1.Rows.Insert(NextRow-1,tempRow);
            }

Dann Zeile markieren und Knopp drücken

ACHTUNG ungetestet, da gerade keine brauchbare IDE in der nähe.
Wenns klappt super wenn nicht kriegste gegen 19 Uhr ne andere Variante ^^

A
abcde Themenstarter:in
4 Beiträge seit 2010
vor 13 Jahren

Funktioniert leider nicht.

Zeilen können nicht automatisch zur Zeilenauflistung der DataGridView hinzugefügt werden, wenn das Steuerelement datengebunden ist.

Danke schonmals 😃

A
abcde Themenstarter:in
4 Beiträge seit 2010
vor 13 Jahren

Folgendes Script habe ich ebenfalls versucht:


http://windowsclient.net/blogs/faqs/archive/2006/07/10/how-do-i-perform-drag-and-drop-reorder-of-rows.aspx

Jedoch mit dem selben Fehler!

4.931 Beiträge seit 2008
vor 13 Jahren

Wenn du DataBinding verwendest (DataTable), dann solltest du auch die Reihenfolge der Daten dort abbilden (z.B. eine Index-Spalte und dann die Indizes der Spalten bei Zeile-rauf bzw. Zeile-runter vertauschen).
Interessant wäre auch noch die Klasse DataView, mit der du Sortieren, Filter etc. kannst.
Zugriff auf DataView erhälst du mittels "DataTable.DefaultView" und bindest diese dann an dein DataGridView (statt direkt die DataTable).
Dann als Sortierkriterium:


dataView.Sort = "Index"; // Name der Index-Spalte