Laden...

DataGridView - SelectionChanged Event

Erstellt von Echo]6[ vor 15 Jahren Letzter Beitrag vor 15 Jahren 6.520 Views
E
Echo]6[ Themenstarter:in
111 Beiträge seit 2006
vor 15 Jahren
DataGridView - SelectionChanged Event

Schönen guten Morgen!

Ich habe zwei DGV's auf meiner Form und lasse die Daten einer Tabelle im erste DGV anzeigen. Nun möchte ich die jeweils dazugehörigen Datensätze der 2. Tabelle im zweiten DGV anzeigen, aber da habe ich gerade ein kleines Problem. Ich hatte es so vorgehabt, dass bei jedem Wechsel der Zeile im ersten DGV, eine Methode ausgeführt wird, die eine DataTable mit den dazugehörigen Datensätzen erstellt und an das zweite DGV bindet.

Nun habe ich mir gedacht, dass ich im "SelectionChanged" - Ereignis, die jeweilige ID auslese, aber dabei bekomme ich den Fehler, dass der Index außerhalb des Bereichs liegt.

Mein Ereignis sieht so aus:


private void dgvMain_SelectionChanged(object sender, EventArgs e)
{
     string sID = dgvMain.SelectedRows[0].Cells[0].Value.ToString();

     MessageBox.Show(sID);
}

Habt ihr vielleicht einen Tipp für mich? Danke schonmal!

Gruß
Echo

Gelöschter Account
vor 15 Jahren

nun. hast du schon mal debugging gamacht?

u
102 Beiträge seit 2008
vor 15 Jahren

versuchs mal mit:

lb_status.Text = GridView1.SelectedValue.ToString();

das mit selected rows kannste inne tonne haun
(milde ausgedrückt)

// EDIT:

ein debug ergibt, dass bei dem ersten select die "selectedRow" -1 ist... danach is die SelectedRow-Eigenschaft immer der index der vorher ausgewählten zeile...

Does Visual Studio Rot the Mind?

Gelöschter Account
vor 15 Jahren

ich würde mal vermuten das das nur dann greift, wenn der selectionmode auf fullrowselect gestellt ist aber das sind alles dinge die man mit dem debugger sehr sehr leicht feststellen kann.

u
102 Beiträge seit 2008
vor 15 Jahren

hmm.. nee.. hatte das schon öfter..
deswegen benutz ich nie "SelectedRow" ... 😉

// EDIT:

wozu debuggen, wenn man vorher weiss was rauskommt?
*grinz*

Does Visual Studio Rot the Mind?

E
Echo]6[ Themenstarter:in
111 Beiträge seit 2006
vor 15 Jahren

Also, die "SelectionMode" habe ich schon auf "fullrowselect" stehen.

u
102 Beiträge seit 2008
vor 15 Jahren

schon mit

GridView.SelectedValue;

probiert?

Does Visual Studio Rot the Mind?

Gelöschter Account
vor 15 Jahren
  1. selectedrows funktioniert zumindest bei mir perfekt.
  2. das ereigniss wird auch beim befüllen geschmissen und das mit dem count = 0 somit hat ein zugriff auf die erste zeile der collection eine argument out of range exception.
E
Echo]6[ Themenstarter:in
111 Beiträge seit 2006
vor 15 Jahren

Da ich meine DataTable an ein BindingSource binde, habe ich es jetzt mit dem BindingSource Event "PositionChanged" gelöst!

Ich meine es klappt zwar jetzt, aber ist das aus eurer Sicht zu empfehlen oder nicht?

Danke für eure Hilfe!

Gruß
Echo

5.299 Beiträge seit 2008
vor 15 Jahren

Ich wunder mich a weng, daß dir keiner mit Databinding kommt. Weil issn klassischer Parent-Child-View, und da muß man nicht das Rad neu erfinden, sondern radeln lernen.

Kannst dir mal "Datenbank in 10 Minuten" angucken. Ist zwar VB, aber den Datenbinde-Kram erledigt man im Designer, den auch c# verwendet.

Der frühe Apfel fängt den Wurm.

Gelöschter Account
vor 15 Jahren

ich habe mich einzig und allein auf das problem konzentriert, das das selectedrows eigenschaftsfeld in einer bestimmten situation einen fehler verursachte.

u
102 Beiträge seit 2008
vor 15 Jahren

öhm.. ich schliees mich meinem vorredner an.. und sage "no comment" zum sog. designer...

Does Visual Studio Rot the Mind?

5.299 Beiträge seit 2008
vor 15 Jahren

na, weiler direkt gefragt hat

... ist das aus eurer Sicht zu empfehlen oder nicht?

  • verstehe ich dich richtig, du findest das "zu empfehlen", da codemäßig im GUI herumzumurkeln?

Der frühe Apfel fängt den Wurm.

Gelöschter Account
vor 15 Jahren

bedenke die chronologie der frage.

u
102 Beiträge seit 2008
vor 15 Jahren

warte.. öhm...

ironie [on]
nein.. eigentlich kann ich gar nicht programmieren und nutze deshalb designer, klicke mir irgendwas zusammen und habe für jedes steuerelement nur einen anwendungsbereich
ironie [off]

hmm.. "herummurkeln" geht nur wenn man von dem was man tut keine anung hat...
soll ich meine gedankengänge jetzt noch näher ausführen?

und:
JA es ist in jedem fall besser am code "herumzumurkeln" als n wysiwyg-editor zu benutzen.. gibt son wort.. nennt sich lerneffekt 😉
(auch learning by doing..)

abgesehen davon...
ich seh nichts von empfehlungen oder darauf bezogene antworten..

hab ich was verpasst?
bin ich noch im selben thread?

Does Visual Studio Rot the Mind?

5.299 Beiträge seit 2008
vor 15 Jahren

bin ich noch im selben thread?

Irgendwie nicht. will sagen: wir sind ordentlich off Topic.
Aber ich halte die Designer-Diskussion für wichtige Grundsatzdiskussion.

abgesehen davon...
ich seh nichts von empfehlungen oder darauf bezogene antworten..

Also ich habe eine Frage nach Empfehlungen gelesen, und empfohlen, Databinding anzuwenden, und ein Tut verlinkt, wos darum geht, Databinding in Designern einzurichten.

Der frühe Apfel fängt den Wurm.

Gelöschter Account
vor 15 Jahren

genau! back to the topic oder besser gesagt zu der letzten frage:

Da ich meine DataTable an ein BindingSource binde, habe ich es jetzt mit dem BindingSource Event "PositionChanged" gelöst!

Ich meine es klappt zwar jetzt, aber ist das aus eurer Sicht zu empfehlen oder nicht?

ich kenne eigendlich kaum anwendungsfälle, wo man databinding vermeiden sollte. allgemein ist das eigendlich eine recht gute sache.