【发布时间】:2017-12-17 12:05:04
【问题描述】:
我正在尝试在 Windows 窗体项目中使用 datagridview 作为用户输入。用户应该能够添加新的组合框列并编辑现有列(更改、添加、删除项目)。
现在我有一个“功能”列表
public class Feature
{
public Guid featureID { get; set; }
public String name { get; set; }
public List<Choice> choices { get; set; }
}
public class Choice
{
public String choiceID { get; set; }
public String name { get; set; }
}
用户可以创建新功能并编辑现有功能。然后将这些特征添加到列表中。 对于每个列表项,datagridview 中都应该有一个组合框列。
当用户添加新功能时,我使用以下代码创建列:
private void addColumnToTable(Feature ft)
{
String colName = "column" + ft.name;
DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
col.HeaderText = ft.name;
col.Name = colName;
col.DataSource = ft.choices;
col.ValueMember = "choiceID";
col.DisplayMember = "name";
dataGridView1.Columns.Add(col);
}
这非常有效。 用户现在可以向数据框列添加输入。 假设用户在一列中选择了一个项目,然后决定删除或更新所选选项。然后我收到一个错误,因为所选项目不再存在。 我不想删除更改的列并再次添加它,因为我希望未更改的选项的选择在功能编辑之前和之后是相同的。
如何更新现有列?是否可以将我的特征列表数据绑定到 datagridview 以实现所需的行为?
谢谢
【问题讨论】:
-
因此,您希望将列动态添加到 DataGridView。我的理解正确吗?显然,您添加列的代码似乎有效。您的意思是,如果用户稍后编辑或删除该新列中的“值”,那么您会收到“错误”。这也是正确的吗?请提供确切的错误信息,并确认我对您的问题的理解是否良好。
标签: c# winforms data-binding datagridview