none
Geänderte Row in Table speichern RRS feed

  • Frage

  • Hallo,

    ich glaube ich gerade zu doof um meine DataTable zu ändern.

    Ich habe ein DataGrid mit DataGridTextColumn in ComportSettings.xaml

    <Grid>
                        <DataGrid ItemsSource="{Binding Test, Mode=TwoWay}" AutoGenerateColumns="False" RowHeaderWidth="0" >
                            <DataGrid.Columns>
                                <DataGridTextColumn Header="PortName"  Binding="{Binding PortName, Mode=TwoWay}"/>
                                <DataGridTextColumn Binding="{Binding BaudRate, Mode=TwoWay}" Header="BaudRate"/>
                                <DataGridTextColumn Header="DataBit" Binding="{Binding DataBit, Mode=TwoWay}"/>
                                <DataGridTextColumn Header="Parity" Binding="{Binding Parity, Mode=TwoWay}" >
                                    <DataGridTextColumn.HeaderStyle>
                                        <Style TargetType="DataGridColumnHeader">
                                            <Setter Property="ToolTip" Value="none, odd, even, mark or space"/>
                                        </Style>
                                    </DataGridTextColumn.HeaderStyle>
                                </DataGridTextColumn>
                                <DataGridTextColumn Header="StopBit" Binding="{Binding StopBit, Mode=TwoWay}"/>
                                <DataGridTextColumn Header="Maschine" Binding="{Binding Maschine, Mode=TwoWay}" Width="100"/>
                            </DataGrid.Columns>
                        </DataGrid>
                    </Grid>

    dazu folgenden Codebehind

     

    public ComportSettings() { DataContext = new ComportSettingsModel(); InitializeComponent(); }

    dazu dann meine PropertyClass ComportSettingsModel

    private DataTable _test;

    public DataTable Test
            {
                get
                {
                    SearchPortsAndXMLFile();
                    DataView test = _xmlComPorts.Tables[0].DefaultView;
                    _test = test.Table;
                    return _test;
                }
                set
                {
                    _test = value;
                    OnPropertyChanged("Test");
                }
            }

    Das Ergebniss wird mir auf der Seite angezeigt,

    ändere ich allerdings etwas wird der Setter dieser Property nicht angesprochen.

    Habe auch für alle anderen Columns Propertys angelegt selbst da werden weder getter noch setter angesprochen.

    Kann mir bitte jemand helfen

    Danke

    Cay


    • Bearbeitet joksch_c Donnerstag, 28. August 2014 11:55
    Donnerstag, 28. August 2014 11:54

Antworten

  • Hallo,
    damit der Setter angesprochen wird, müsste sich das DataTable ändern. Das tut es jedoch nie, lediglich der Inhalt ändert sich. Das hat aber keine Auswirkung auf die Instanz deines DataTable.

    Es gibt diverse Events, die ausgelöst werden wenn sich der Inhalt einer Zelle ändert. Beispielsweise das CellEditEnding-Event.

    Du hast aber auch die Möglichkeit Events deiner DataTable zu abonnieren, beispielsweise RowChanged.
    Letzteres sollte sich auch MVC/MVVM konform implementieren lassen.


    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    • Als Antwort markiert joksch_c Freitag, 29. August 2014 05:53
    Donnerstag, 28. August 2014 21:04
    Moderator

Alle Antworten

  • Hallo,

    jemand eine andere lösung wie ich eine DataTable an ein DataGrid binden kann und wo ich dann die einzelnen Zeilen editieren kann ??

    Habe ein UserControl xaml und cs die als DataContext meine PropertyClass hat in der ich alles abarbeite.

    grüße

    Cay

    Donnerstag, 28. August 2014 14:56
  • Hallo,
    damit der Setter angesprochen wird, müsste sich das DataTable ändern. Das tut es jedoch nie, lediglich der Inhalt ändert sich. Das hat aber keine Auswirkung auf die Instanz deines DataTable.

    Es gibt diverse Events, die ausgelöst werden wenn sich der Inhalt einer Zelle ändert. Beispielsweise das CellEditEnding-Event.

    Du hast aber auch die Möglichkeit Events deiner DataTable zu abonnieren, beispielsweise RowChanged.
    Letzteres sollte sich auch MVC/MVVM konform implementieren lassen.


    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    • Als Antwort markiert joksch_c Freitag, 29. August 2014 05:53
    Donnerstag, 28. August 2014 21:04
    Moderator
  • Hallo,

    erstens deine Antwort ist auch richtig aber das beste ist ja mal wieder die Default Einstellungen von VS2013 Express.

    Optionen, Debbugging "Eigenschaften und Debugging überspringen" da musste der Haken raus und schon ging alles wie geschmiert.

    aber danke habe deines auch ausprobiert.

    Freitag, 29. August 2014 05:55