Grid Selected Row



  • Hi, ich stehe vor einem kleinen Problem.

    Sagt mal gibts ne einfache Lösung die Ausgewählte Reihe auszugeben?
    Ich hab Ein Grid mit den Spalten:

    ID | Name | Beschreibung

    In diesem Grid sind bereits Rows eingefügt worden. Nun möchte ich jedoch herausfinden welche Row gerade angeklickt bzw. Markiert ist. Später möchte ich noch das er mir in der ROW->SPALTE ID den Inhalt anzeigt.

    Hat jemand eine gute Lösung für mein Problem?

    PS: Teste selbst die ganze Zeit aber "SelectedRows" klappt nicht so recht.



  • WAS klappt denn nicht mit SelectedRows ?



  • Kann ich dir gern sagen. Ich hab folgendes versucht

    this->Text = Grid1->SelectedRows->ToString();
    

    Also da kommt nur die Windows::System blabla als Text vor. Jedoch nicht welche Zeile gerade markiert ist.



  • Das liegt daran, das SelectedRows eine Collection ist. Diese musst Du durchlaufen, dann kannst Du auf die einzelnen Reihen zugreifen. Innerhalb der Rows kannst Du dann auf die Zellen zugreifen und Dir den String zusammen bauen ^^



  • Knuddlbaer schrieb:

    Das liegt daran, das SelectedRows eine Collection ist. Diese musst Du durchlaufen, dann kannst Du auf die einzelnen Reihen zugreifen. Innerhalb der Rows kannst Du dann auf die Zellen zugreifen und Dir den String zusammen bauen ^^

    Hast evtl. ein Beispiel für mich?



  • Wenn nur 1 Zeile ausgewählt werden kann z. B.:

    //Spaltenanzahl der ausgewählten Zeile abrufen
    int zellenzähler=this->dataGridView1->SelectedCells->Count;
    
    //String-array mit denn Zellinhalten erstellen (nicht zwingend), Größe abhängig von der Spaltenzahl 
    array<String^>^ datensatz=gcnew array<String^>(zellenzähler);
    
    //zuweisen über den SelectedCells-Index
    for(int i=0;i<zellenzähler;i++)
    {
    datensatz[i] = this->dataGridView1->SelectedCells[i]->Value->ToString();
    }
    

    Bei mehreren Zeilen und dem Zugriff auf alle ausgewählten Zeilen z. B.:

    String^alleinhalte;
    for (int a=0;a<this->dataGridView1->SelectedRows->Count;a++)
    {
         for (int b=0;b<this->dataGridView1->SelectedRows[a]->Cells->Count;b++)
         {
         alleinhalte+=
         this->dataGridView1->SelectedRows[a]->Cells[b]->Value->ToString()+" ";
    
         }
    
         alleinhalte+=Environment::NewLine;
    }
    MessageBox::Show(alleinhalte);
    

    Hoffe dir hilfts weiter... 🙂


Anmelden zum Antworten