C# Datagridview Frage

roker002

Commander
Registriert
Dez. 2007
Beiträge
2.077
Ich will die Daten aus der Datenbank auslesen. Das geht alles in Ordnung. Binden an den Datagridview ist auch kein Problem.

Mein Problem ist, ich will 2 Spalten durch Buttons im DataGridView ersetzen. Habe schon versucht die Tabelle mit eigenen Spalten zu definieren, was Teilweise schon funktioniert hat. Beim ausführen des Programms habe ich dann einen Exception bekommen
"Mindestens eine Spalte des DataGridView-Steuerelements hat keine Zellenvorlage."

was ist dieses Zellenvorlage? CellTemplate ist aber abstrakte Klasse.

Eine andere Frage!! Kann man nachhinein die Zellen so umgestalten dass ich dort einen Button statt DB Werte drinnen stehen habe?
 
das ist Win Forms... Ich habe jetzt so gemacht dass die Buttons Extra vor dem Einspielen der Daten eingefügt werden. Leider sehe ich da keinen Eventhandler der einen ButtonClick haben kann.
 
Sicherlich erstellst du die Buttons per Hand zur Laufzeit richtig? Dann musst du einfach die Events auch zur Laufzeit dynamisch ranhängen.Oder verstehe ich dich falsch?
 
Ja ich erstelle die Buttons per hand...

Code:
            DataGridViewButtonColumn bt1 = new DataGridViewButtonColumn();
            bt1.Name = "Übersicht";
            bt1.Text = "Klicken";
            MyDataGridView.Columns.Add(bt1);

            MyDataGridView.DataSource = TableSet.Tables[0];

Alle Buttons erscheinen aber es gibt keinen Text.

Wenn ich aber jetzt mit einem Event "CellClick" den Name der Zelle aufrufe, dann kommt ja "Klicken" wieder raus.

Code:
            if (e.ColumnIndex == 0)
                MessageBox.Show(((DataGridViewButtonColumn)RechnungsListe.Columns[e.ColumnIndex]).Text);
 

Anhänge

  • Buttons.png
    Buttons.png
    1,9 KB · Aufrufe: 206
Ja ich habe schon kurz vorher das Problem gelöst.

Ich habe jetzt versucht einen Checkbox einzufügen.. das geht ja genau so wie oben der Code, halt nur mit CheckBoxColumn. Wenn ich jetzt versuche die Werte (Checked/Unchecked) auszulesen erscheint der CheckBox auf einmal als TextBox. Wie soll ich das verstehen?

EDIT... so ich habe verstanden wieso ich auf dem CheckBox nicht springen kann.

Der Code sieht so aus....


Code:
            DataGridViewButtonColumn bt1 = new DataGridViewButtonColumn();
            bt1.Name = "Übersicht";
            bt1.Text = "Klicken";
            bt1.UseColumnTextForButtonValue = true;
            bt1.Width = 75;
            MyDataGridView.Columns.Add(bt1);   ///Hier bekommt diese Column den Index 0...

            MyDataGridView.DataSource = TableSet.Tables[0]; ///Hier sollten die 4 Spalten von 1-4 gefüllt werden.

            DataGridViewCheckBoxColumn checking = new DataGridViewCheckBoxColumn();
            checking.Name = "Rechnung zusammenfassen";
            MyDataGridView.Columns.Add(checking);  ///Dieser Soll den Index 5 bekommen.

Dieser Codeabschnitt läuft problemlos... Button mit Index 0 und Checkbox mit Index 5. Sobald ich aber den CellClick Event auslöse wird der CheckBox neugeordnet. Keiner Ahnung wieso aber der bekommt auf einmal den Index 1. kann da jemand weiterhelfen?
 
Zuletzt bearbeitet:
Zurück
Oben