Autor Beitrag
mjanz
Hält's aus hier
Beiträge: 11

Win XP, Win Vista
C#(VS 2008), VB (VS 2008)
BeitragVerfasst: Do 29.05.08 13:15 
Hi,

ich abe folgende Frage: mit einer LINQ-Abfrage fülle ich ein DataGridView:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
public void LoadCategories()
{
    string strCategory = "";
    strCategory = kategorienComboBox.Text;

    // diese Abfrage grenzt nach Kategorien ein, d. h. es werden nur
    // alle Artikel einer Kategorie angezeigt
    var procatQry = from p in db.Products
                    where p.Categories.CategoryName == strCategory
                    select p;

    dgrArtikel.DataSource = procatQry;
}


Die Abfrage funktioniert wie programmiert und das DataGridView wird gefüllt.

Das DataGridview ist ReadOnly, SelectionMode ist FullRowSelect. Wenn ein User auf einen der Datensätze doppelklickt, möchte ich in meiner Anwendung weitere Datenbankabfragen machen um dann diesen Daten im Detail darzustellen, Änderungsmöglichkeiten zu geben, etc.

Wie kann ich einzelne Zellinhalte aus der selektierten, geklickten Zeile auslesen, um diese Daten für weitere Abfragen zu verwenden? Wißt Ihr Rat? Tausend Dank im Voraus für Eure Hilfe!

Gruß
Marcus

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
mjanz Threadstarter
Hält's aus hier
Beiträge: 11

Win XP, Win Vista
C#(VS 2008), VB (VS 2008)
BeitragVerfasst: Do 29.05.08 14:29 
Hi,

hab es hinbekommen:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
        private void dgrArtikel_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            int iIndex = 0;
            int ArtikelID = 0;
            iIndex = this.dgrArtikel.CurrentRow.Index;
            ArtikelID = Convert.ToInt32(this.dgrArtikel.Rows[iIndex].Cells[0].Value);
        }


Trotzdem danke für Eure Mühen!

Gruß
Marcus

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 29.05.08 14:38 
Das geht u.a. mit:

DataGridView.CurrentRow.Cells[].Value
DataGridView.CurrentCell.Value
DataGridView.CurrentRow.DataBoundItem as DataRowView;

Der Wert muss immer in den entsprechenden Typ konvertiert werden.

// Während ich das geschrieben habe, hast Du selbst Deine Lösung geschickt. Die ist aber nicht gut genug. An meinen Vorschlägen siehst Du, dass es kürzer geht; außerdem ist Convert.ToXxx immer zu vermeiden. Hier geht es einfach so:
ausblenden C#-Quelltext
1:
ArtikelID = (int)dgrArtikel.CurrentRow.Cells[0].Value;					

In anderen Situation ist Parse, ParseExact, TryParse, TryParseExact entschieden vorzuziehen.

Außerdem solltest Du Code markieren, wie Christian schon einmal angedeutet hat: Textbereich markieren, Button "Bereiche" öffnen, das Plus neben C# anklicken.

Jürgen