2008-09-22 65 views
2

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

情况:当我点击网格中的一个按钮时,它增加了一个在同一行中的值。当我点击时,我可以调试并查看增量值,但该值在网格中不会更改。 但是当我点击按钮,最小化和恢复窗口,值更新...我有什么需要做的,像以前那样更新值?

UPDATE 这是不解决,但我接受了这里最好的答案。

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

回答

2

为了使结合是双向的,从控制到数据源和数据源来控制数据源必须实现属性更改通知事件,在2种可能的方法之一:

  • 落实INotifyPropertyChanged接口,并引发该事件当属性发生改变:

    public string Name 
    { 
        get 
        { 
        return this._Name; 
        } 
        set 
        { 
        if (value != this._Name) 
        { 
         this._Name= value; 
         NotifyPropertyChanged("Name"); 
        } 
        } 
    } 
    
  • Inplement变了一个事件,每时,它改变了必须通知控件属性。事件名称必须是形式属性名更改:

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

    *作为一个注意,您的属性值是窗口最大化后正确的,因为控制从数据源中重新读取值。

+0

Pop Catalin你有一点,这已经完成。在项目中有2个网格与SAME对象和1个网格工作,另一个不是:( – 2008-09-23 00:50:00

0

这听起来像你需要在你的更新代码中调用DataBind。

0

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