将列表绑定到数据网格视图后显示成员的问题

本文关键字:显示 成员 问题 视图 网格 绑定 列表 数据 数据网 | 更新日期: 2023-09-27 18:37:17

我在将列表绑定到数据网格视图时遇到问题。该列表包含自定义类的实例,其属性之一是"Nom"。

专栏是我Datagridview的第一列。VS在正确的部分中以这种方式自动声明:

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

出于任何原因,如果我在column.DataSource之后打电话给column.DisplayMember,我会得到一个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.

将列表绑定到数据网格视图后显示成员的问题

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

控件按以下方式声明:private System.Windows.Forms.DataGridViewComboBoxColumn column2;private System.Windows.Forms.DataGridViewComboBoxColumn column;它们属于同一个数据网格视图。

这是在 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

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