Announcement

Collapse
No announcement yet.

Daten aus Datagridview auslesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Daten aus Datagridview auslesen

    Hallo

    Ich habe mit dem untenstehenden Code den Wert einer bestimmten Zelle der selektierten Zeile ausgelesen. Funktioniert nun auch soweit. Nur erhalte ich die Meldung...

    Fehler 2 Der Typ "Applikation.form" enthält bereits eine Definition für "btnDetails_Click". C:...
    Code:
    public delegate void btnDetails_Click(object sender, DataGridViewRowEventArgs ex, EventArgs e);
            private void btnDetails_Click(object sender, DataGridViewRowEventArgs ex, EventArgs e)
            {
                int ID = (int)datagridview.SelectedRows[ex.Row].Cells["ID"].Value;
    
                MessageBox.Show(ID.ToString());
            }
    Nun bekomme ich leider die Meldung nicht weg. Weiss jemand, wie ich dies noch "ins Reine" bringen kann?

    Gruss
    Roland

  • #2
    Soll die Methode mit Inhalt benutzt werden? Dann muss die Zeile mit "delegate" gelöscht werden.

    Ein Delegate ist ebenfalls eine Klasse (wie alles unter NET). Diese Klasse kann nicht denselben Namen haben wie eine Instanz davon (was der konkrete EventHandler faktisch ist).

    Unabhängig davon ist es natürlich seltsam, woher die delegate-Definition kommt...

    Gruß Jürgen

    Comment


    • #3
      Das "delegate" war definitiv falsch. Ich habe nun den folgenden Code...

      Code:
      private void btnDetails_Click(object sender, DataGridViewRowEventArgs ex, EventArgs e)
              {
                  int ID = (int)datagridview.SelectedRows[ex.Row].Cells["ID"].Value;
      
                  MessageBox.Show(ID.ToString());
              }
      Wenn ich nun im Datagridview ein Zeile selektiere und den Button klicke, bekomme ich als Resultat den Wert aus der Zelle ID der selektierten Zeile.
      Beim Debuggen bekomme ich aber nun die beiden folgenden Fehler...

      - 1-Argument: kann nicht von "System.Windows.Forms.DataGridViewRow" in "int" konvertiert werden.
      - Keine Überladung für "btnDetails_Click" stimmt mit dem Delegaten "System.EventHandler" überein.

      Leider weiss ich nicht, wie ich diese beiden Fehler noch wegbringe. Hat vielleicht jemand einen Tipp?

      Comment


      • #4
        Habs nun auf eine andere Art und Weise hinbekommen...

        Code:
                private void btnDetails_Click(object sender, EventArgs e)
                {
                    string ID_Verkauf = null;
        
                    foreach (DataGridViewRow row in grdVerkaeufe.SelectedRows)
                    {
                        ID_Verkauf = row.Cells["ID_Verkauf"].Value.ToString();
                    }
        }

        Comment


        • #5
          Abgesehen davon, dass Du eine Lösung inzwischen gefunden hast, noch folgende Erläuterungen:
          Originally posted by roland76 View Post
          Code:
          private void btnDetails_Click(object sender, DataGridViewRowEventArgs ex, EventArgs e)
                  {
                      int ID = (int)datagridview.SelectedRows[ex.Row].Cells["ID"].Value;
          
                      MessageBox.Show(ID.ToString());
                  }
          ...

          - 1-Argument: kann nicht von "System.Windows.Forms.DataGridViewRow" in "int" konvertiert werden.
          - Keine Überladung für "btnDetails_Click" stimmt mit dem Delegaten "System.EventHandler" überein.
          Der zweite Fehler ist eindeutig: Für Click wird ein System.EventHandler benötigt, und der darf als Parameter nur "object sender, EventArgs e" haben. Das "DataGridViewRowEventArgs ex" gehört weg.

          Der erste Fehler ist möglicherweise darauf zurückzuführen, dass der Debugger die Daten unglücklich auswertet. Erleichtere ihm die Arbeit mal mit Klammern:
          Code:
          int ID = (int)(datagridview.SelectedRows[ex.Row].Cells["ID"]).Value;
          Außerdem gefällt mir bei Dir das ständige ToString() nicht. Für die MessageBox ist das natürlich meistens das richtige Verfahren. Es passt aber u.U. nicht, wenn Du ein "object Value" als String interpretieren willst; dann ist
          Code:
          ID_Verkauf = (string)row.Cells["ID_Verkauf"].Value;
          möglicherweise besser. Bei vielen Objekten kann es sein, dass in ToString() noch andere erläuternde Informationen stecken.

          Gruß Jürgen

          Comment

          Working...
          X