2

我有一个绑定到集合的网格。由于某种我不知道的原因,现在当我在网格中执行某些操作时,网格不会更新。

情况:当我单击网格中的按钮时,它会增加同一行中的值。当我单击时,我可以调试并查看值增量,但网格中的值不会改变。但是当我单击按钮,最小化并恢复窗口时,值会更新......我必须做什么才能像以前一样更新值?

更新 这没有解决,但我在这里接受了最好的答案。

它没有解决,因为当数据来自数据库而不是来自缓存时,它照常工作。对象被序列化并在事件丢失的过程中被抛出。这就是为什么我重新构建它们并且它适用于我所知道的,因为我可以与它们交互但似乎由于未知原因它不适用于更新网格。

4

3 回答 3

2

为了使绑定是双向的,从控件到数据源以及从数据源到控制数据源必须以两种可能的方式之一实现属性更改通知事件:

  • 实现INotifyPropertyChanged接口,并在属性更改时引发事件:

    public string Name 
    {
      get
      {
        return this._Name;
      }
      set
      {
        if (value != this._Name)
        {
            this._Name= value;
            NotifyPropertyChanged("Name");
        }
      }
    }
    
  • 为每个必须在更改时通知控件的属性实现更改事件。事件名称必须采用PropertyName Changed 形式:

    public event EventHandler NameChanged;
    
    public string Name 
    {
      get
      {
        return this._Name;
      }
      set
      {
        if (value != this._Name)
        {
            this._Name= value;
            if (NameChanged != null) NameChanged(this, EventArgs.Empty);
        }
      }
    }
    

    *请注意,您的属性值在窗口最大化后是正确的,因为控件会重新读取数据源中的值。

于 2008-09-23T00:35:37.573 回答
0

听起来您需要在更新代码中调用 DataBind 。

于 2008-09-22T22:59:17.493 回答
0

我在我的集​​合和我的网格之间使用 BindingSource 对象。通常我不需要打电话。

于 2008-09-22T23:08:17.580 回答