【发布时间】:2017-11-22 15:43:49
【问题描述】:
在我的 C# 程序中,我有一个包含 datagridview 的 windows 窗体 (Winforms)。这个datagridview的最后一列是datagridviewcomboboxcolumn,每个comboboxcell(每一行)都有自己的数据源。
由于可能有很多行,我想进行绑定以快速填充 datagridview。我已经尝试绑定第一列,然后填充组合框的数据源(在 RowsAdded 事件中),但这需要太多时间。
我的班级资料如下:
public class Data
{
public string _aaa { get; private set; }
public string _bbb { get; private set; }
public string _ccc { get; private set; }
public List<Room> _rooms_list { get; private set; }
...
}
Room 类包含以下成员:
public ElementId Id { get; }
public virtual string Name { get; set; }
当datagridview的数据源绑定到一个Data对象列表时,我希望对应的comboboxcell用对应的Room对象列表填充,Name为DisplayMember,Id为ValueMember。
我在网上搜索过,但如果可能与否,我没有找到答案。
非常感谢您的帮助。
编辑
更多信息:我想让用户在检测到/找到的房间列表中选择所需的房间,这就是我选择组合框的原因。我的计算结果已经在两个(绑定的)字符串列中显示为字符串。
我还想让整个事情都可以排序,所以我使用 SortableBindingList 将 DGV 与 Data 对象列表绑定:mainDataGridView.DataSource = new SortableBindingList<Data>(_data);
【问题讨论】:
-
wpf的winforms?
-
您能否发布一些 XAML 代码或您如何创建 datagridview?
-
您在评论中说... ”每个组合框单元格包含 1 到 4 个房间项目。但是可以有很多行。”...如果是这种情况,那么发布的类
Data不仅似乎缺少Room值变量,而且对于@987654326 来说似乎很尴尬@object 包含多个Room附加到该对象的值。由于这些 MULTIPLERoom值用于网格中的ComboBox单元格,因此每行的Data对象似乎只需要一 (1) 个值。???? -
示例 1) 如果组合框列表包含“Room1”、“Room2”和“Room3”……
Data对象将用户选择的内容保存在哪里?如果组合框包含上述值……您将这个值放在Data对象的哪个位置以显示用户选择的Room? -
示例 2) 每行在组合框中可能有不同的值,但是,在填充网格后,每行组合框单元格将仅显示组合框中的一 (1) 个值。鉴于此,
Data类似乎缺少该Data对象的选定Room值。同样如上所述,让每个Data对象包含它永远不会使用的值似乎很尴尬……即其List<Room> _rooms_list中的值不是由用户选择的。
标签: c# data-binding datagridview datagridviewcombobox