C # Datagridview Привязка к классу не обновляется - PullRequest
0 голосов
/ 03 апреля 2011

У меня есть представление данных, которое я привязываю к классу. Я добавляю в класс, но представление данных не обновляется.

Моя привязка:

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

Я пошел дальше и выполнил AddCheck, чтобы увидеть, достигло ли оно сетки данных, но не ... Класс обновляется.

Мой класс:

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


  }

}

Может кто-нибудь сказать мне, что я делаю не так?

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 03 апреля 2011

Если вы когда-нибудь замените ScannedChecksCollection новым ScannedChecksCollection, то установщик свойства должен запустить exent PropertyChanged.

    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

0 голосов
/ 03 апреля 2011

Разве вы не должны делать

dataGridView1.DataSource = ScannedChecks.ScannedChecksCollection;
...