zoukankan      html  css  js  c++  java
  • DevExpress的GridControl控件更新數據問題解決辦法

    開發WPF程序時,使用Devexpress的GridControl控件用ItemSource綁定數據,在頁面進行編輯時,當屬性繼承INotifyPropertyChanged接口時
    會同步更新後臺數據。今天在開發時遇到一種情況,當通過GridControl中Row上Button【Command】改變行內數據,也就是binding的Detail數據已
    改變,這時NotifyPropertyChanged有觸發,但改變的行數據不會同步更新到UI上,目前測試有兩種方式進行解決。

    1.直接new 一個新的行數據對象

    2.通過Messenger類發送通知至UI頁面, UI註冊通知,收到通知後執行 GridControl[GridControl 名稱].RefrshData()方法,進行刷新

    部分測試代碼:

    第一種:

    public RelayCommand<GridRowVal> MyCommand
            {
                get
                {
                    return _myCommand
                        ?? (_myCommand = new RelayCommand<GridRowVal>(
                                              p =>
                                              {
                                                  
                                                  var row = this.GridData.SingleOrDefault(q => q.Name == p.Name);
                                                  if (row != null)
                                                  {
                                                      int index = this.GridData.IndexOf(p);
    
                                                      this.GridData[index] = new GridRowVal
                                                      {
                                                          Name = p.Name + "test",
                                                          IsCheck = p.IsCheck,
                                                          Memo = p.Memo
                                                      };
                                                  }
                                              }));
                }
            }

    第二種:

    public RelayCommand<GridRowVal> MyCommand
            {
                get
                {
                    return _myCommand
                        ?? (_myCommand = new RelayCommand<GridRowVal>(
                                              p =>
                                              {
                                                  var row = this.GridData.SingleOrDefault(q => q.Name == p.Name);
                                                  if (row != null)
                                                  {
                                                      row.Name = p.Name+"abc";
    
                                                      Messenger.Default.Send<string>("Refresh");
                                                  }
                                              }));
                }
            }
    
    //頁面.cs 構造函數中
    Messenger.Default.Register<string>(this, p => {
                    if (p == "Refresh")
                    {
                        GridControl1.RefreshData();
                    }
                });

    備註:項目中使用了MVVMLight框架, 記錄用。

  • 相关阅读:
    tip6: 程序不工作就是最大的异常
    简单实用的Code Review工具
    HDU4008 Parent and son [树形DP]
    HDU4004 The Frog's Games [二分]
    HDU4006 The kth great number [堆]
    HDU4024 Dwarven Sniper’s hunting [二分]
    HDU4005 The war [树形DP]
    HDU4009 Transfer water [最小树形图]
    HDU4023 Game [贪心+博弈]
    HDU4007 Dave [杂题]
  • 原文地址:https://www.cnblogs.com/ywkpl/p/3818544.html
Copyright © 2011-2022 走看看