将列表绑定到Datagridview后显示成员问题

时间:2015-01-12 15:48:14

标签: c# datagridview

我将列表绑定到datagridview时遇到问题。 该列表包含一个自定义类的实例,其中一个prop是" Nom"。

列是我Datagridview的第一列。 这是由VS在这个正确的部分自动声明的:

column = new System.Windows.Forms.DataGridViewComboBoxColumn();

出于任何原因,如果我在column.DisplayMember之后致电column.DataSource,我会收到nullreference例外情况。 相同的代码适用于combobox。我错过了datagridviews特定的内容吗?

BindingSource bs = new BindingSource();

List<C_Exercice> l = new List<C_Exercice>();
l.Add(new C_Exercice("n", "", "", "", "", DateTime.Now, 1, 1, 5, 0, true));
bs.DataSource = l;

column.DisplayMember = "Nom";    
// -> works fine

column.DataSource = bs;// My_Business.Get_Exercices_List("", "", "", 0, -1, true);

column.DisplayMember = "Nom";
//-> when called again, cause a nullreference exception 

DisplayMember的第二次调用将导致以下异常:

An unhandled exception of type 'System.NullReferenceException' occurred in System.Windows.Forms.dll
Additional information: Object reference not set to an instance of an object.

1 个答案:

答案 0 :(得分:0)

陌生人和陌生人。 项目内部导致问题: 我删除了导致isue的datagrid 我用一个组合框列(名为System.Windows.Forms.DataGridViewComboBoxColumn.column2)创建一个新的datagridview。我测试了相关的代码,它工作正常。 然后我在这个datagrid中插入导致问题的旧组合框列:System.Windows.Forms.DataGridViewComboBoxColumn.column)。我在InitializeComponent()之后复制了导致问题的代码。 相同的代码适用于新的DataGridViewComboBoxColumn,但仍然会导致旧控件的null引用错误。 似乎指向控制声明或参数的问题。这看起来与我在房产中看到的相似。

以这种方式声明控件: private System.Windows.Forms.DataGridViewComboBoxColumn column2; private System.Windows.Forms.DataGridViewComboBoxColumn列; 它们属于同一个datagridview。

这是在InitializeComponent()之后测试的代码:

   BindingSource bs2 = new BindingSource();
        List<C_Exercice> l2 = new List<C_Exercice>();
        l2.Add(new C_Exercice("n", "", "", "", "", DateTime.Now, 1, 1, 5, 0, true));
        bs2.DataSource = l2;


        column2.DisplayMember = "Nom"; //works fine
        column2.DataSource = bs2;// My_Business.Get_Exercices_List("", "", "", 0, -1, true);
        column2.DisplayMember = "Nom"; //works fine


        BindingSource bs = new BindingSource();
        List<C_Exercice> l = new List<C_Exercice>();
        l.Add(new C_Exercice("n", "", "", "", "", DateTime.Now, 1, 1, 5, 0, true));
        bs.DataSource = l;


        column.DisplayMember = "Nom"; //works fine
        column.DataSource = bs;// My_Business.Get_Exercices_List("", "", "", 0, -1, true);
        column.DisplayMember = "Nom";  //causes the nullreference error

好吧,我刚删除导致问题的控件并使用新控件。它解决了我的问题。 但如果有人知道我为什么遇到这个问题,我会很乐意测试它,以防决议可以帮助其他人面对同样的问题。