Entwickler-Ecke

WinForms - Button in DataGrid


Taggert - Di 16.12.08 14:06
Titel: Button in DataGrid
Hallo,

ich bin noch ein rechte noob was C# angeht, aber ich versuch mich durchzukämpfen.
Zur Zeit beschäftige ich mich mit dem DataGrid Control.

Hier meine Frage: Ich würde gerne einen Button in die DataGrid integrieren, um automatisch einen Dialog zum Ändern der Daten auf zu rufen.
Aber irgendwie komm ich mit den Beispielen im Netz nicht ganz klar.

Ich hab mir eine Methode geschrieben, um den Header der Tabelle zu setzen


C#-Quelltext
1:
2:
3:
4:
5:
6:
        private void GenerateHeader()
        {
           
            table.Columns.Add("Art.-Nr"typeof(System.String));
            table.Columns.Add("Art.-Name"typeof(System.String));
        }


Wenn ich nun eine Spalte einfügen möchte, dann muss ich doch so was schreiben:

C#-Quelltext
1:
2:
3:
4:
5:
6:
        private void GenerateHeader()
        {
            table.Columns.Add("Edit"typeof(System.Control));
            table.Columns.Add("Art.-Nr"typeof(System.String));
            table.Columns.Add("Art.-Name"typeof(System.String));
        }


aber ich weiss noch nicht richtig, wie ich dann den Button in das DataRow Objekt integriere.

Vielen Dank für Eure Hilfe
Grüße

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt


JüTho - Di 16.12.08 14:35

Hallo und :welcome:

Befasse Dich lieber mit dem DataGridView, da ist die DataGridViewButtonColumn-Klasse schon vorgesehen.

Außerdem empfehle ich (zumindest für den Anfang), für das Erzeugen einer DataTable den Designer zu benutzen. In der Designer.cs kannst Du dann nachlesen, was wie per Code erstellt werden kann.

Jürgen


Taggert - Di 16.12.08 17:06

OK, kannst du mir vielleichteinen Tipp geben, wie das mit der DataGridView funktioniert.
Ich wäre Dir wirklich sehr dankbar.

Grüße Taggert


JüTho - Di 16.12.08 18:30

Dafür gibt es zunächst die SDK-Doku/MSDN. Wenn Dir nicht klar ist, was das ist, dann benutze in der IDE F1 oder Schau in die Doku! - Möglichkeiten der Informationsgewinnung [http://www.mycsharp.de/wbb2/thread.php?threadid=64815]. Die nötigen Stichworte habe ich schon genannt.

Jürgen


Taggert - Mi 17.12.08 11:59

Hallo,

ich kämpfe immer noch mit dem DataGridViewButtonColumn. Ich hab noch nicht richtig verstanden, wie man deas ganze Ding der DataGridView hinzufügt.
Ich versuche mir über eine Datenbank (noch händisch) Daten auszulesen und diese dann in die Tabelle zu schreiben. Das ganze Datenbank gewurschtel spar ich euch.

Ich geb Euch mal meinen Quellcode:



C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
        private DataTable table = new DataTable();

        private void FillDataGrid()
        {
             while (Reader.Read())
             {
               DataRow row = table.NewRow();
               row[0] = Reader.GetValue(0).ToString();
               row[1] = Reader.GetValue(1).ToString();
               row[2] = Reader.GetValue(2).ToString();
         table.Rows.Add(row);
       }
             dataGridView_Lager.DataSource = table;
        }


        private void GenerateHeader()
        {
            //DataGridViewButtonColumn button = new DataGridViewButtonColumn();
            //button.Name = "Edit";
            //button.Text = "Edit";
            //table.Columns.Add(button);
            table.Columns.Add("Art.-Nr"typeof(System.String));
            table.Columns.Add("Art.-Name"typeof(System.String));
            table.Columns.Add("Lager"typeof(System.String));
  }


Die auskommentierten Zeilen sind jene, die nicht klappen.
Was mach ich falsch?

Grüße Taggert


jaenicke - Mi 17.12.08 13:05

user profile iconTaggert hat folgendes geschrieben Zum zitierten Posting springen:
Die auskommentierten Zeilen sind jene, die nicht klappen.
Was mach ich falsch?
Dass du nicht schreibst was nicht klappt...
Kompilierfehler? Laufzeitfehler? Passiert nix?


Taggert - Mi 17.12.08 13:14

Kompiliert leider nicht.

Hier die Fehlermeldung:
Die beste Übereinstimmung für die überladene System.Data.DataColumnCollection.Add(System.Data.DataColumn)-Methode hat einige ungültige Argumente.

Sorry, dass ich es nicht gleich geschrieben habe.
Ich bekomm den Button einfach nicht in die DataGridView integriert.

Grüße Taggert


jaenicke - Mi 17.12.08 13:26

user profile iconJüTho hat folgendes geschrieben Zum zitierten Posting springen:
Befasse Dich lieber mit dem DataGridView, da ist die DataGridViewButtonColumn-Klasse schon vorgesehen.

user profile iconTaggert hat folgendes geschrieben Zum zitierten Posting springen:

C#-Quelltext
1:
        private DataTable table = new DataTable();                    
Was soll ich dazu noch sagen...
Du kannst das nicht einfach mischen.

user profile iconTaggert hat folgendes geschrieben Zum zitierten Posting springen:
Ich bekomm den Button einfach nicht in die DataGridView integriert.
Du hast ja auch keine mit table... :roll:

// EDIT:
dataGridView_Lager ist wohl deine DataGridView, oder?


Taggert - Mi 17.12.08 13:31

Doch doch, ich hab da ne DataGridView in die ich die DataTable einspiele.
dataGridView_Lager ist die DataGridView

Trotzdem Danke Dir für Deine Hilfe.
Grüße Taggert


jaenicke - Mi 17.12.08 13:33

Die musst du dann auch benutzen.

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
        private void GenerateHeader()
        {
            DataGridViewButtonColumn button = new DataGridViewButtonColumn();
            button.Name = "Edit";
            button.Text = "Edit";
            dataGridView_Lager.Columns.Add(button);
         }

// EDIT:
Wie das im Zusammenspiel mit DataTable dann funktioniert weiß ich nicht, ich kenne die Klassen nicht, aber jedenfalls gehören die beiden Klassen so zusammen.


Taggert - Mi 17.12.08 13:41

:oops:

Ich komm mir gerade verdammt dämlich vor. Ich geh jetzt einfach mal in den Keller und versuch mir die Bretter vor dem Kopf wegzuhauen.
Ich hab das Attribut Columns vor den den ganzen ColumnHeader Attributen einfach nur übersehen.

Ich geh dann mal weiterproggen. Asche auf mein Haupt...wo ist schon wieder der Aschenbecher hin....

Danke Euch und die Geduld die Ihr mit mir hattet.
Verschämte Grüße
Taggert