0
public class ANote{
    public string NoteId = "";
    public string Note = "";
    public string NoteCollector = "";
    public DateTime NoteCollectionDate = DateTime.MinValue;
    public string NoteCollectionDay {
    get { return NoteCollectionDate.toString("MM/dd/yyyy") ; }
    }
    public string NoteCollectionTime {
    get { return return NoteCollectionDate.toString("hh/mm tt"); }
    }
    public DateTime ADate = DateTime.Now;
    public double AAmount = 0.0D;
    public string AName = "";
    }

そして BindingList aList;

また、次のような上記の(すでに入力されている)リストにバインドしようとする DataGridTExtBoxColumns の束を持つグリッドがあります。

colDate.DataPropertyName ="NoteCollectionDay";
colTime.DataPropertyName = "NoteCollectionTime";
colName.DataPropertyName = "NoteCollector";
colADate.DataPropertyName = "ADate";
colAAmount.DataPropertyName = "AAmount";
colAName.DataPropertyName = "AName";
colNotes.DataPropertyName = "Note";

grdNotes.AutoGenerateColumns = false;
grdNotes.DataSource = aList;

しかし、実行時には、colDate 列と colTime 列だけが適切に入力されます。他のすべては空白です..Grid.Rows[idx].Cells[idx].Value他の列を具体的に見ると、すべてnullです。

また、AutoGenerateColumns を true に設定すると、追加の列 NoteID が表示され、これも適切に入力されますが、ANote、Amount、ADate、AName、および Note フィールドは空白のままです。

リスト内のデータに問題はありません..すべてのクラスメンバーが有効な値を持っています.

私が何かを見逃していない限り、それは BindingList または DataGridView に問題があるようです..そうでない場合は、これをデバッグする方法についてのアイデア..それは非常に単純なテストケースです!

4

1 に答える 1

4

データプロパティ名を参照しているため、プロパティのみが機能しますか?

残りはフィールドです。それらを自動プロパティに変換してみてください:

public string Note { get; set; }

また、BindingList は、リストに含まれるオブジェクトのプロパティではなく、リスト自体のコンテンツが変更されたことのみをサブスクライバーに通知することに注意してください。

これを実現したい場合は、オブジェクトに INotifyPropertyChanged を実装し、プロパティの set メソッドで通知をトリガーする必要があります。

于 2009-09-17T20:10:44.183 に答える