Announcement

Collapse
No announcement yet.

Zugriff auf die aktuellen Daten eines Datagrid

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zugriff auf die aktuellen Daten eines Datagrid

    In vielen Fällen werden aus Gründen der Übersichtlichkeit Spalten in einem Datagrid ausgeblendet. Der verdeckte Inhalt soll aber bei entsprechender Notwendigkeit durch Anklicken des jeweiligen Satzes als Info in der Statuszeile ausgegeben werden.

    Über Datagrid.CurrentCell.RowNumber findet man die aktuelle Zeile der entsprechenden DatenMenge, natürlich mit 0 (Null) beginnend.
    Mit DataGrid.DataSource.Tables("Beispiel").Rows(Me.Dat aGrid.CurrentCell.RowNumber).Item("Versteckte Spalte")
    kann man den Inhalt des Feldes auslesen.

    Das geht so lange gut, bis der Inhalt nicht über die Sortiermöglichkeit des DataGrids in eine andere Reihenfolge versetzt wird.

    Dann funktioniert alles nicht mehr, es werden die falschen Sätze der Auswahl angesprochen.

    Kennt jemand einen vernünftigen Weg, z.B. auf den Zelleninhalt der nicht sichtbaren Spalte zugreifen?

    Besten Dank im Voraus

  • #2
    Hallo,

    anstelle das DataGrid auszulesen (das nur für die visuelle Darstellung der Daten zuständig ist), ist es besser, direkt die darunterliegende Datenquelle auszulesen. Über den für dieses DataGrid zuständige <i>CurrencyManager</i>-Instanz kann man sich die virtuelle Datensatzposition des DataGrids holen. In einem Beispiel könnte das so aussehen:
    <pre>
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    ' SELECT CustomerID, CompanyName, City FROM Customers
    Me.SqlDataAdapter1.Fill(Me.DataSet11)
    End Sub
    ' aktuellen Wert auslesen
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    Dim aCM As CurrencyManager
    aCM = CType(DataGrid1.BindingContext(DataGrid1.DataSourc e), CurrencyManager)
    Dim aDRV As DataRowView = CType(cm.Current, DataRowView)
    MessageBox.Show(aDRV("CustomerID").ToString())
    End Sub
    </pre&gt

    Comment


    • #3
      Hi,
      irgend wie klappt es nicht, Syntax wird nicht angemeckert, in Funktion kommt aber folgende Meldung

      Eine nicht behandelte Ausnahme des Typs 'System.InvalidCastException' ist in DRSClientTool.exe aufgetreten.

      Zusätzliche Informationen: Specified cast is not valid.

      Die Zeile habe ich korrigiert,
      Dim aDRV As DataRowView = CType(<B>aCM</B>.Current, DataRowView

      Comment

      Working...
      X