Veröffentlicht 22. März 200520 j Irgendwie steh' ich wohl auf dem Schlauch: Ich habe ein DataGrid, nun möchte ich zu einem bestimmten Zeitpunkt feststellen, in welchem "Modus" die Eingabe, bzw. der Focus ist: a) Ist eine ganze Zeile markiert oder ist er im "Eingabemodus" in einer bestimmten Zelle und läßt den User editieren? In Abhängigkeit davon soll das Programm nämlich unterschiedlich reagieren. Ich hab versucht, mit DataGrid.CurrentCell irgendwas anzufangen, dies hilft genausowenig, wie die Information, die mir DataGrid.IsSelected() liefert Wenn da jemand nen Tip oder schon Erfahrung mit hat, wäre ich sehr dankbar Gruß
22. März 200520 j Das Datagrid hat ja bestimmte Ereignisse - EditCommand : wenn was verändert wird - ItemCommand...... usw... Datagrid -> Eigenschaften -> Ereignis somit kannst du vereinzelt auf Aktionen reagieren....
22. März 200520 j normalerweise müsste dir DataGrid.IsSelected() etwas liefern. DataGrid.isSelected() liefert bei mir für alle blau markierten Zeilen True.
22. März 200520 j zu adragon: Ich vergaß zu sagen, daß es ne Windows.Forms-Anwendung ist. Dort sind diese Events nicht vorhanden. Und irgendwie hab ich auch kein Ereignis gefunden, was mir diese Unterscheidung ermöglicht. zu arrayhunter: Klar, IsSelected() liefert mir dasselbe Ergebnis wie bei dir. Dennoch kann ich damit die beiden oben genannten Fälle nicht unterscheiden, da er mir bei beiden Version true liefert
22. März 200520 j zu arrayhunter: Klar, IsSelected() liefert mir dasselbe Ergebnis wie bei dir. Dennoch kann ich damit die beiden oben genannten Fälle nicht unterscheiden, da er mir bei beiden Version true liefert ok, ich dachte, du wolltest generell auf die Markierung eines Eintrages reagieren beispiel aus der msdn: colNum = dataGrid1.CurrentCell.ColumnNumber; rowNum = dataGrid1.CurrentCell.RowNumber; // Get the selected DataGridColumnStyle. DataGridColumnStyle dgCol; dgCol = dataGrid1.TableStyles[0].GridColumnStyles[colNum]; // Invoke the BeginEdit method to see if editing can begin. if (dataGrid1.BeginEdit(dgCol, rowNum)){ // Edit row value. Get the DataTable and selected row. DataTable myTable; DataRow myRow; // Assuming the DataGrid is bound to a DataTable. myTable = (DataTable) dataGrid1.DataSource; myRow = myTable.Rows[rowNum]; // Invoke the Row object's BeginEdit method. myRow.BeginEdit(); myRow[colNum] = "New Value"; // You must accept changes on both DataRow and DataTable. myRow.AcceptChanges(); myTable.AcceptChanges(); dataGrid1.EndEdit(dgCol, rowNum, false); } else{ Console.WriteLine("BeginEdit failed"); Beispiel zu finden unter DataGrid.BeginEdit-Methode
22. März 200520 j zu adragon: Ich vergaß zu sagen, daß es ne Windows.Forms-Anwendung ist. Dort sind diese Events nicht vorhanden. Und irgendwie hab ich auch kein Ereignis gefunden, was mir diese Unterscheidung ermöglicht. achsoo.. ich dachte es wäre für ne aspx site ok dann kann ich dir mometan auch nicht weiterhelfen.. :cool:
31. März 200520 j Danke erstmal für die Hilfe. Habe es mittlerweile so gelöst, daß ich bei den jeweiligen DataGridTextBox'en aller Spalten zwei Methoden an OnEnter und OnLeave drangehängt habe und somit den Status ermitteln kann. Nun habe ich folgendes Problem. Wenn der Benutzer im DataGrid in der untersten Zeile, die als "neue" Zeile ja mit einem Sternchen markiert ist, was eingibt, dann wird ja automatisch eine neue DataRow eingefügt, allerdings noch nicht in die dahinterhängende DataTable. Nun muß ich aber auf diese temporäre DataRow zugreifen können, habe aber partout nichts gefunden. Vielleicht hat schon jemand Erfahrung damit gemacht und kann mir da helfen. Danke.
1. April 200520 j Auf die eigentliche "in der Luft hängende" Datenzeile kann man über die Row-Eigenschaft des DataRowView-Objektes zugreifen. und die musst du dann speichern
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.