Autor Beitrag
JoKaBo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157



BeitragVerfasst: Di 25.02.14 19:15 
Guten Abend liebe Community,

ich setzte mich grade mit dem DataGridView auseinander

Ich möchte dort werte (in dem fall Support Tickets) aus einer XML Datei einfügen, die ich aus der WHMCS API bekomme.
Dies funktioniert bereits. Jetzt geht es darum, das sich am Ende jeder Zeile ein Button befinden soll, mit dem ich das Supportticket öffnen kann.

Ich habe bereits einen Code geschrieben. Es sollte sich immer eine MessageBox mit der Ticket ID öffnen, wenn ich auf den den Button drücke. Leider passiert nichts, wenn ich auf den Button drücke. Dafür öffnet sich die MessageBox, wenn ich auf das Feld welches sich davor befindet drücke.

Ich hoffe, das Ihr mir helfen könnt.

Mit freundlichen Grüßen
JoKaBo

#=====================
Code Sektion
#=====================
ausblenden volle Höhe 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:
27:
28:
29:
30:
31:
32:
        private void home_Load(object sender, EventArgs e)
        {
            DataTable table = new DataTable();
            table.Columns.Add("ID");

            for (int i = 0; i < 10; i++)
            {
                DataRow row = table.NewRow();
                row[0] = i.ToString();
                table.Rows.Add(row);
            }
            
            DataGridViewButtonColumn bnCol = new DataGridViewButtonColumn();
            bnCol.Text = "Ansehen";
            bnCol.UseColumnTextForButtonValue = true;

            dataGridView1.DataSource = table;
            dataGridView1.Columns.Add(bnCol);

            dataGridView1.CellClick += new DataGridViewCellEventHandler(dataGridView1_CellClick);

        }

        void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 1)
            {
                DataRow row = ((DataRowView)dataGridView1.Rows[e.RowIndex].DataBoundItem).Row;

                MessageBox.Show("Die Ticket ID " + row[0].ToString() + " wurde ausgewählt");
            }
        }


Zuletzt bearbeitet von JoKaBo am Di 25.02.14 20:41, insgesamt 1-mal bearbeitet
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 25.02.14 19:57 
Um mal den "Tomaten auf den Augen"-Fehler direkt abzuklären: Die Buttons sind im zweiten Column (also Index 1), ja?

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
JoKaBo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157



BeitragVerfasst: Di 25.02.14 20:04 
Zitat:
Um mal den "Tomaten auf den Augen"-Fehler direkt abzuklären: Die Buttons sind im zweiten Column (also Index 1), ja?


Ja, genau.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 25.02.14 20:15 
Habe das gerade mal nachgestellt. Die ColumnIndizes sind da nicht so, wie ich (und Du) das erwarten würden. Der erste Column hat in Deinem Beispielcode den Index 1 und der zweite den Index 0. Das hängt wohl mit der Auto-Generierung der Columns zusammen :nixweiss:

Wenn Du die Columns alle manuell erstellst, ist es so, wie man es erwarten würde:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
      dataGridView1.AutoGenerateColumns = false;

      DataGridViewTextBoxColumn idCol = new DataGridViewTextBoxColumn();
      idCol.DataPropertyName = "ID";
      dataGridView1.Columns.Add(idCol);
      
      DataGridViewButtonColumn bnCol = new DataGridViewButtonColumn();
      bnCol.Text = "Ansehen";
      bnCol.UseColumnTextForButtonValue = true;

      dataGridView1.Columns.Add(bnCol);

      dataGridView1.DataSource = table;

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".

Für diesen Beitrag haben gedankt: JoKaBo
JoKaBo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157



BeitragVerfasst: Di 25.02.14 20:40 
Ok, super. Vielen Dank. ;)