2016-05-01 18 views
0

DataGridのリフレッシュの問題について何回か検索しました。しかし、それについては何も知りません。私の問題は以下の通りです。それは大胆に働く。 しかし、ユーザーが列をソートしてからセルを編集すると、DataGridはバインドできません。 VSはエラー "{" AddNewまたはEditItemが "ソート"を許可していないとリストします。 "}。"セル編集後にWPF DataGridをリフレッシュすることはできません

しかし、ユーザーがデータグリッド列を並べ替えることができます。この問題に取り組むのを手伝ってください。ありがとう!

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

リストのソースのように、どのようにソートされているのか、さらにすべてのコードを共有してください。 – ViVi

+0

ありがとうございます。私のリストは、MS SQLで実行された "select id、job_name、job_type、job_status from F_job"です。私がSQLを修正した後も何も変わっていません。だから私はそれがDataGridレンダリングの問題に間違っているはずだと思う。セル編集を終了すると、DataGridがレンダリングを開始します。その時、私はそれにデータをバインドすることはできません。 –

+0

DataGridのソートイベントがあります。そのイベントを処理し、ソース内のデータを更新しようとします。 – ViVi

答えて

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); } 
    } 

双方向でのItemsSource

のためにIEモード= "双方向" を結合してみてください。

動作しない場合は、以下のコードを試してください。私は完全に実装されていないので、コードをテストしませんでした。これから考えてみてください!

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

うわー、ありがとう、あなたのコードのために。私は昨日それらをテストしました。彼らは動作しませんが、あなたは私にいくつかの新しいアイデアを与えます。私はあなたと正常にデバッグした後、それを共有します。反対側で、私はなぜ問題が起こるのだろうかと思います。 –

+0

さて、テストできなかったので動作しないかもしれません。完全に実装されたバージョンではありません。ソート中にリストを更新するのが基本的な考えです。試してみてください! – ViVi

関連する問題