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

  • 相关阅读:
    springboot的@EnableAutoConfiguration起作用的原理
    springboot加载bean过程探索
    dubbo源码阅读笔记-如何引用远程服务,变成invoker
    HashMap如何实现序列化
    如果处理缓存失效从数据库加载数据
    redis设计原则
    redis相关运维命令
    spring的compentScan注解扫描类机制
    全文检索技术
    前端设计网站
  • 原文地址:https://www.cnblogs.com/ywkpl/p/3818544.html
Copyright © 2011-2022 走看看