2011-04-03 72 views
0

我有一个datagridview,我绑定到一个类。我添加到类,但datagridview不更新。C#Datagridview绑定到不更新的类

我的绑定:

ScannedChecks = new ScannedChecks(); 
    ScannedChecks.AddCheck(DateTime.Now, "22222", "checknumdd", "routingdd", _checkData, 4); 
    dataGridView1.DataSource = ScannedChecks; 

我继续做了AddCheck,看它是否达到了在DataGridView并且不......这个班虽然被更新。

我的类:

namespace SSS.Ckentry 
{ 
    public class ScannedChecks : INotifyPropertyChanged 
    { 
    public event PropertyChangedEventHandler PropertyChanged; 

    public ScannedChecks() 
    { 
     ScannedChecksCollection = new ObservableCollection<ScannedCheck>(); 
    } 

    public void AddCheck(DateTime checkDate, string accountNumber, string checkNumber, string bankRoutingNumber, string bankAccountNumber, decimal checkAmount) 
    { 
     var scc = new ScannedCheck 
        { 
        CheckDate = checkDate, 
        AccountNumber = accountNumber, 
        CheckNumber = checkNumber, 
        BankRoutingNumber = bankRoutingNumber, 
        BankAccountNumber = bankAccountNumber, 
        CheckAmount = checkAmount, 
        }; 

     ScannedChecksCollection.Add(scc); 

    } 

    public ObservableCollection<ScannedCheck> ScannedChecksCollection { get; set; } 

    public class ScannedCheck 
    { 
     public DateTime CheckDate { get; set; } 
     public string AccountNumber { get; set; } 
     public string CheckNumber { get; set; } 
     public string BankRoutingNumber { get; set; } 
     public string BankAccountNumber { get; set; } 
     public decimal CheckAmount { get; set; } 
    } 


    } 

} 

谁能告诉我什么,我做错了什么?

非常感谢!

回答

1

如果你有一个新的ScannedChecksCollection更换ScannedChecksCollection,属性setter应该火的PropertyChanged exent。

private ObservableCollection<ScannedCheck> scannedChecksCollection; 
    public ObservableCollection<ScannedCheck> ScannedChecksCollection { 
     get 
     { 
      return scannedChecksCollection; 
     } 
     set 
     { 
      if (value != scannedChecksCollection) 
      { 
       value = scannedChecksCollection; 
       NotifyPropertyChanged("ScannedChecksCollection"); 
      } 
     } 
    } 

    private void NotifyPropertyChanged(string propName) 
    { 
     if (PropertyChanged != null) 
      PropertyChanged(this, new PropertyChangedEventArgs(propName)); 
    } 

如果检查是可以修改的,应ScannedCheck执行INotifyPropertyChanged

+1

同样的,他需要在他自己的对象的属性通知道具的变化而不是快捷获取/套。 – SQLMason 2011-04-03 13:44:58

+0

And ...而不是AddCheck(...)他可以只是ScannedChecks.Add(新ScannedCheck(){CheckDate = ....}); – SQLMason 2011-04-03 13:47:18

0

你不应该做

dataGridView1.DataSource = ScannedChecks.ScannedChecksCollection;