Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[C#] DataGrid-Problem

Empfohlene Antworten

Veröffentlicht

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

B) 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ß

Das Datagrid hat ja bestimmte Ereignisse

- EditCommand : wenn was verändert wird

- ItemCommand......

usw...

Datagrid -> Eigenschaften -> Ereignis somit kannst du vereinzelt auf Aktionen reagieren.... :D

normalerweise müsste dir DataGrid.IsSelected() etwas liefern.

DataGrid.isSelected() liefert bei mir für alle blau

markierten Zeilen True.

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 :(

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

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 :D

ok dann kann ich dir mometan auch nicht weiterhelfen.. :cool:

  • 2 Wochen später...

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.

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.