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框架, 記錄用。

  • 相关阅读:
    如何参与linux 内核开发
    绘制dot 图
    GITHUB 提交错误 Error: Permission denied (publickey) 解决
    atomic_read
    linux 获取cpu 个数
    【转】 管理CPU 亲和性
    【转】 申请对齐某种结构体大小的buffer
    WePY框架开发的小程序中使用 echarts折线图
    vue + css3 实现主题色切换
    vue 中 const { x } = this 的用法
  • 原文地址:https://www.cnblogs.com/ywkpl/p/3818544.html
Copyright © 2011-2022 走看看