我的一些<t>成员的某些成员没有出现绑定到BindingList <t> </t> </t>的数据网格视图

时间:2009-09-17 20:04:09

标签: c# datagridview bindinglist

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的网格,我尝试绑定到上面(已经填充的)List,如:

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列正确填充。所有其他人都是空白的。当我特别注意其他colmns的Grid.Rows[idx].Cells[idx].Value时,它全部为空。

此外,如果我将AutoGenerateColumns设置为true,我会看到一个额外的列NoteID,并且也正确填充,但ANote,Amount,ADate,AName和Note字段仍为空白!

列表中的数据没有任何问题..所有类成员都有有效值。

除非我遗漏了某些东西这似乎是BindingList或DataGridView的问题..如果没有,关于如何调试this..it的任何想法都是一个非常简单的测试用例!

1 个答案:

答案 0 :(得分:4)

您指的是数据属性名称,因此只有属性可用?

其余的都是田地。尝试将它们转换为自动属性:

public string Note { get; set; }

另请注意,BindingList只会通知订阅者列表内容本身已更改,而不是列表中包含的对象的属性。

如果要实现此目的,您希望对象实现INotifyPropertyChanged,并在属性的set方法中触发通知。