2009-09-17 22 views
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 datagridview的轉起來;我的一些類<T>的成員不要綁定到的BindingList <T>

也有一堆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的其他colmns時,它全部爲空。

另外,如果我將AutoGenerateColumns設置爲true,則會看到額外的列NoteID,並且也會正確填充,但是,註釋,金額,ADate,AName和註釋字段仍然爲空!

列表中的數據沒有問題..所有類成員都有有效值。

除非我失去了一些東西這似乎是一個BindingList或DataGridView的問題..如果不是,任何想法如何調試這..它是一個非常簡單的測試用例!

+0

這是c#嗎? 我必須在這裏添加更多的字符以通過過濾器。 – recursive 2009-09-17 20:14:49

回答

4

您指的是數據屬性名稱,因此只有屬性纔有效?

其餘的領域。嘗試將它們轉換爲自動屬性:

public string Note { get; set; } 

還要注意的是,該列表本身的內容發生了變化,而不是物業包含在列表中的對象的的BindingList只會通知用戶。

如果您想實現這個功能,您希望您的對象實現INotifyPropertyChanged,並在屬性的set方法中觸發通知。

+0

我認爲這些字段有自動執行的屬性?!如 公共字符串Var; 相當於 public string Var {get;設置;} ..我可能是錯的,但是這兩種情況在功能上有什麼區別? (除非bindingList是什麼不適用於字段的例子,我只是把自己弄糊塗:)) – 2009-09-17 20:17:24

+0

這是相反的方式。自動屬性具有編譯器創建的使用私有字段的getter和setter方法。 – 2009-09-17 20:19:06

+0

DataGridTextBoxColumns DataPropertyName使用反射來獲取您提供的屬性的值。顧名思義。 – 2009-09-17 20:20:21

相關問題