2016-05-01 8 views
0

Ich habe mehrmals über das Problem der Datagrid-Aktualisierung gesucht. Aber ich kann mir keine Vorstellung davon machen. Mein Problem ist wie folgt. Grundsätzlich kann es funktionieren. Aber wenn Benutzer Spalten sortieren und dann Zelle bearbeiten, kann DataGrid nicht binden. VS würde den Fehler "{" anzeigen, sobald AddNew oder EditItem das "Sortieren" nicht erlauben. "}."WPF DataGrid kann nach dem Bearbeiten der Zelle nicht aktualisiert werden

Aber es ist freundlich für Benutzer, Datagrid-Spalten sortieren zu dürfen. Bitte helfen Sie mir, dieses Problem anzugehen. Danke!

private void DataGrid1_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e) 
    { 

      string sql="update table1 set field1='"+cell_value+'' 
      BindGR(); 

     } 


    private void BindGR() 

    { 
     //Bind DataGrid 
     if (dt != null) 
     { 
      DataGrid1.ItemsSource = dt.DefaultView; 

     } 

    } 
+0

Bitte teilen Sie mehr Code, wie die Quelle der Liste, wie es sortiert wird und alle. – ViVi

+0

Danke. Meine Liste ist "select id, job_name, job_type, job_status aus F_job" in MS SQL ausgeführt. Und nach der Änderung von SQL änderte sich nichts. Also ich denke, es sollte mit DataGrid Rendering-Problem falsch sein. Wenn ich die Zellbearbeitung beende, beginnt DataGrid mit dem Rendern. Zu diesem Zeitpunkt kann ich keine Daten an sie binden. –

+0

Es gibt ein Sortierereignis für Datagrid. Behandeln Sie dieses Ereignis und versuchen Sie, die Daten in Ihrer Quelle zu aktualisieren. – ViVi

Antwort

0

View.xaml

<DataGrid x:Name="MyDataGrid" 
      Sorting="DataGrid_OnSorting" 
      ItemsSource="{Binding DataGridItems, Mode="TwoWay"}"> 
</DataGrid> 

View.xaml.cs

private ObservableCollection<DataClass> dataGridItems = new ObservableCollection<DataClass>(); 

    public ObservableCollection<DataClass> DataGridItems 
    { 
     get { return dataGridItems; } 
     set { SetProperty(ref dataGridItems, value); } 
    } 

Bitte versuchen Sie es mit TwoWay Bindung dh Mode = "TwoWay" für Itemssource

Wenn es nicht funktioniert, versuchen Sie den Code unten. Ich habe den Code nicht getestet, da er nicht vollständig implementiert ist. Versuchen Sie, eine Idee davon zu bekommen!

private void DataGrid_OnSorting(object sender, DataGridSortingEventArgs e) 
{ 
    var sortedGrid = sender as DataGrid; 
    foreach (var item in sortedGrid.Items) 
    { 
     DataGridItems.Add(item); 
    } 
} 
+0

Wow, vielen Dank für Ihren Code. Ich habe sie gestern getestet. Obwohl sie nicht funktionieren, gibst du mir eine neue Idee. Ich würde es nach dem Debuggen mit Ihnen teilen. Auf der anderen Seite frage ich mich, warum das Problem passiert. –

+0

Ja, sie könnten nicht funktionieren, da ich es nicht testen konnte und es ist keine vollständig implementierte Version für mich. Es ist also die Grundidee, die Liste beim Sortieren zu aktualisieren. Probieren Sie es aus und lassen Sie es mich wissen! – ViVi

Verwandte Themen