Winform DataGridView数据绑定到复杂类型/嵌套属性

B Z*_*B Z 13 .net c# data-binding datagridview .net-3.5

我试图将a数据绑定DataGridView到包含具有以下结构的类的列表:

MyClass.SubClass.Property
Run Code Online (Sandbox Code Playgroud)

当我单步执行代码时,SubClass永远不会请求.

我没有得到任何错误,只是没有看到任何数据.

请注意,我可以在具有相同层次结构的编辑表单中进行数据绑定.

Chr*_*mes 12

得墨忒耳定律.

在MyClass上创建一个公开SubClass.Property的属性.像这样:

public class MyClass
{
   private SubClass _mySubClass;

   public MyClass(SubClass subClass)
   {
      _mySubClass = subClass;
   }

   public PropertyType Property
   {
      get { return _subClass.Property;}
   }   
}
Run Code Online (Sandbox Code Playgroud)

  • 对,那是我的最后一个案例场景,但我有 7 个子类型要处理,所以我正在寻找更好的方法。不过,谢谢小费。 (2认同)

viz*_*zmi 5

您可以向 DataBindingComplete 事件添加处理程序并填充其中的嵌套类型。像这样的东西:

在表单加载中:

dataGridView.DataBindingComplete += new DataGridViewBindingCompleteEventHandler(dataGridView_DataBindingComplete);
Run Code Online (Sandbox Code Playgroud)

稍后在代码中:

void dataGridView_DataBindingComplete(object sender,
        DataGridViewBindingCompleteEventArgs e)
{
    foreach (DataGridViewRow row in dataGridView.Rows)
    {
        string consumerName = null;
        consumerName = ((Operations.Anomaly)row.DataBoundItem).Consumer.Name;
        row.Cells["Name"].Value = consumerName;
    }
}
Run Code Online (Sandbox Code Playgroud)

这不太好,但有效。