none
Werte aus DataGrid auslesen RRS feed

  • Frage

  • Salü alle zusammen

    Ich habe bereits stundenlang gegoogelt und einige Beiträge zum DataGridView gefunden, nicht aber zu meinem Datagrid das ich verwende.

    Ich habe ein DataGrid und möchte den wert der markierten Zeile aus Spalte 3 erhalten. Folgendes habe ich an XAML Code:

            <DataGrid x:Name="dgBericht" AutoGenerateColumns="False" 
                          ItemsSource="{Binding Source ={StaticResource BerichtVersand},XPath=//Patient}" SelectionChanged="dgBericht_SelectionChanged">
                <DataGrid.Columns >
                    <DataGridTextColumn Header="Patient" Width="110" Binding="{Binding XPath=Name}"></DataGridTextColumn>
                    <DataGridTextColumn Header="Bericht" Width="220" Binding="{Binding XPath=Bericht}"></DataGridTextColumn>
                    <DataGridTextColumn Header="ID" Width="30" Binding="{Binding XPath=BerichtID}"></DataGridTextColumn>
                </DataGrid.Columns>
            </DataGrid>
    

    In einem Button habe ich folgendes probiert, leider alles erfolglos:

            private void btnOeffnen_Click(object sender, RoutedEventArgs e)
            {
                if (dgBericht.SelectedIndex == -1)
                {
                    MessageBox.Show("Es muss eine Zeile ausgewählt werden");
                }
                else {
                    int vRow = dgBericht.SelectedIndex;
                    int vCol = 2;
                    Object vWert = dgBericht.SelectedItem ;
                    object vWert2 = dgBericht.CurrentItem;
                    //string vWert3 = dgBericht.SelectedItem[1];
                    //string vWert4 = dgBericht.Rows[vRow][BerihtID].ToString();
                    //object vWert4a = dgBericht[vRow],[BerihtID];
                    object vWert5 = dgBericht.Items[vRow].ToString();
                    //object vWert6 = dgBericht.Items[dgBericht.CurrentCell.Item[2]];
                    string vWert6 = dgBericht.rows
                    MessageBox.Show("Ausgelesen");
                }
            }

    Am interessantesten scheint mir SelectedItem zu sein, denn dort sehe ich beim Debuggen, dass die Werte vorhanden sind. Aber wie lese ich diese aus?

    Vielen Dank für einen Hinweis
    Seit herzlichst gegrüsst

    Montag, 30. Juli 2012 05:18

Alle Antworten

  • Hallo Sabrina,

    ich habe hier einen code aus einem älteren Programm von mir. Vielleicht hilft der Dir weiter. Ich benutze heute nur noch das DataGridView, weil mehr Möglichkeiten.

    Nachtrag.

    Dieser Code ist nur gültig für das DataGrid Steuerelement (Windows.Forms)

            Private Sub DataGrid1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGrid1.MouseMove
     
    		'
            ' Zellenkoordinaten lesen
            '
            Dim hti As DataGrid.HitTestInfo = Me.DataGrid1.HitTest(e.X, e.Y)
            Dim item As String = String.Empty
    		
    		If hti.Type = DataGrid.HitTestType.Cell Then
    
                        'nicht behandeltes DBnull im Grid
                        Dim obj As Object = DataGrid1.Item(hti.Row, hti.Column)
                        If TypeOf obj Is System.DBNull Then Exit Sub
                        item = CType(DataGrid1.Item(hti.Row, hti.Column), String)

    Und hier ein Beispiel für das DataGridView (Windows.Forms)

    Gruss Ellen


    Ich benutze/ I'm using VB2008 & VB2010




    Montag, 30. Juli 2012 09:22
  • Salü Ellen

    Vielen lieben Dank für Deinen Beispielcode.

    Wenn ich Dich richtig verstehe, dann ist die DataGridView neuer als DataGrid? Ist denn die DataGridView auch xaml? Wenn ich <DataGridView></DataGridView> eingebe, dann sagt er mir, dass er das nicht kennt.

    Mein DataGrid kennt kein .Item, nur ein .Items. 

    Viele liebe Grüsse
    Sabrina

    Montag, 30. Juli 2012 12:45
  • Salü Ellen

    Vielen lieben Dank für Deinen Beispielcode.

    Wenn ich Dich richtig verstehe, dann ist die DataGridView neuer als DataGrid? Ist denn die DataGridView auch xaml? Wenn ich <DataGridView></DataGridView> eingebe, dann sagt er mir, dass er das nicht kennt.

    Mein DataGrid kennt kein .Item, nur ein .Items. 

    Viele liebe Grüsse
    Sabrina

    Hi Sabine,

    Du solltest Deine Frage besser hier stellen: http://social.msdn.microsoft.com/Forums/de-DE/wpfde/threads

    Ich bin irrtümlich davon ausgegangen dass Du ein Forms Projekt schreibst. In Windows.Forms gibt es das Steuerelement DataGrid, welches von DataGridView abgelöst wurde.

    Mein code ist für ein WPF Projekt nicht anwendbar. Sorry.

    Gruss Ellen


    Ich benutze/ I'm using VB2008 & VB2010

    Montag, 30. Juli 2012 14:09
  • Aha, ok, falsches Forum. Tja, offenbar kann ich nicht nur nicht programmieren, auch nicht das richtige Forum auswählen, heul heul... was für ein Wochenbeginn...

    Dennoch vielen lieben Dank Dir für Deine Hilfe.

    Herzlichste Grüsse
    Sabrina

    Montag, 30. Juli 2012 15:15
  • Hallo,

    ich würde das Auslesen wie folgt durchführen:

    Object vWert = dgBericht.SelectedItem.Cells[Spaltennummer nullbasiert]

    Gruß

    Holger 

    • Als Antwort vorgeschlagen h.schewe Freitag, 8. Februar 2013 08:56
    Donnerstag, 7. Februar 2013 13:14