【问题标题】:How to bind Windows DataGridView to nested object (dictionary)?如何将 Windows DataGridView 绑定到嵌套对象(字典)?
【发布时间】:2021-08-02 12:41:23
【问题描述】:

我们有绑定到对象的datagridview(提琴手核心) 现在这个对象作为 disctionart oflags 我们无法将 oflag 绑定到 datagridView 但能够绑定其他字段。我们在 C# 中使用 datagridview,它具有请求 id、url 和 oflag[“Deviation”] 值 能否请您发送任何可用于绑定Oflags的示例代码

dataGridView1.Columns[0].Name = "id";
dataGridView1.Columns[0].HeaderText = "id";
dataGridView1.Columns[0].DataPropertyName = "id";
dataGridView1.Columns[1].Name = "fullUrl";
dataGridView1.Columns[1].HeaderText = "fullUrl";
dataGridView1.Columns[1].DataPropertyName = "fullUrl";
dataGridView1.Columns[2].Name = "LocalProcess";
dataGridView1.Columns[2].HeaderText = "LocalProcess";
dataGridView1.Columns[2].DataPropertyName = "LocalProcess";
dataGridView1.Columns[3].Name = "oFlags";
dataGridView1.Columns[3].HeaderText = "oFlags";
**dataGridView1.Columns[3].DataPropertyName = "oFlags[Deviation]";**

【问题讨论】:

  • 这能回答你的问题吗? DataGrid Column Binding with Dictionary
  • 如果您有一个对象“集合”,并且您将DataGridView.DataSource 设置为此对象集合,则该对象的每个公开公开的属性都将转换为网格中的一列。这适用于原始和单值属性,但是,如果对象的公开公开属性之一是另一个类或“集合”(如字典),那么这些属性将不会生成列,因为这些属性是“集合”并且网格不够智能,无法将集合扁平化为单个值以显示在单个单元格中。
  • 基本上网格不知道如何将“多个”项目放入单个单元格中。一种可能的解决方案是在对象中创建另一个属性,该属性返回集合的扁平化版本。然后网格将自动为该属性创建一个列。另一种解决方案是创建具有两个网格的主从方案。第一个网格显示每行中的对象,另一个网格将显示第一个网格中所选对象的oFlags(主从)。抱歉,如果我遗漏了什么。

标签: c# winforms datagridview


【解决方案1】:
//Set AutoGenerateColumns False

dataGridView1.AutoGenerateColumns = false;

//Set Columns Count

dataGridView1.ColumnCount = 3;

//Add Columns

dataGridView1.Columns[0].Name = "CustomerId";
dataGridView1.Columns[0].HeaderText = "Customer Id";
dataGridView1.Columns[0].DataPropertyName = "CustomerID";
 
dataGridView1.Columns[1].HeaderText = "Contact Name";
dataGridView1.Columns[1].Name = "Name";
dataGridView1.Columns[1].DataPropertyName = "ContactName";
 
dataGridView1.Columns[2].Name = "Country";
dataGridView1.Columns[2].HeaderText = "Country";
dataGridView1.Columns[2].DataPropertyName = "Country";

另见Bind data to DataGridView in Windows Forms Application in C# and VB.Net

【讨论】:

  • 这不能解决我的程序,因为 oflag 是字典,dataGridView1.Columns[3].DataPropertyName = "oFlags[Deviation]"
猜你喜欢
  • 2019-09-11
  • 2017-08-30
  • 2011-09-09
  • 1970-01-01
  • 2011-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-27
相关资源
最近更新 更多