【问题标题】:c# datagridview having different datasources for different columnsc# datagridview 对不同的列有不同的数据源
【发布时间】:2011-05-10 04:45:14
【问题描述】:

我有一个 datagridview,它有多个文本列和一个组合框列。我需要为组合框列的 iems 指定一个数据源,并为其他文本列指定另一个数据源。我尝试了以下示例代码,但它不起作用。

dgv1.DataSource = DataSet1.Tables[0];
string[] managerList = Array.ConvertAll(DataSet2.Select(), row => (string)row[0]);
comboboxcolumn1.DataSource = managerList;

managerList 数组包含要填充到组合框中的条目,但它们从不显示。

这样我就不能为组合框列及其父数据网格视图提供单独的数据源了吗?

提前致谢。

【问题讨论】:

  • 你可以有..你有没有试过在分配给组合框列时使用BindingSource
  • 你能说得更具体点吗?我找不到 datagridviewcomboboxcolumn 的 bindingsource 属性。
  • 它不是属性,类似于comboboxcolumn1.DataSource = new BindingSource(managerList,null);
  • 我试过 comboboxcolumn1.DataSource = new BindingSource(managerList, managerList[0]);它说在数据源上找不到数据成员属性“111111”。 111111 是 managerList[0] 中的字符串
  • 所以 .. 那行得通吗 .. 有什么错误吗?

标签: c# datasource datagridviewcolumn


【解决方案1】:

我已经检查了以下代码,它工作正常

string[] arr = "This Should Get Displayed".Split(); //managerList in your case           
dataGridView1.DataSource = MyData(false);
(dataGridView1.Columns["Column1"] as DataGridViewComboBoxColumn).DataSource = new BindingSource(arr, null); // Bind to the column of grid

您可以尝试将其分配为引用它作为数据网格视图的列吗?

这会在我的组合框中的 空格 上显示文本拆分。

当您使用字符串数组时,无需为列指定 DisplayValue 成员

编辑

如果你有DataTable,你也可以这样做

(dataGridView1.Columns["Column1"] as DataGridViewComboBoxColumn).DataSource= datatable;
(dataGridView1.Columns["Column1"] as DataGridViewComboBoxColumn).DisplayMember="columnname";
(dataGridView1.Columns["Column1"] as DataGridViewComboBoxColumn).ValueMember="columnname";

【讨论】:

  • 这仍然不起作用。您是否将 datagridview 的数据源设置为其他内容?不提供组合框列数据的东西?
  • 是的..目前网格数据源与comboboxcolumn没有关系..你的情况有吗?
  • 我创建了一个工作示例,其中组合框列从来自存储过程的值的子集中获取值。但是处理 2 个数据集似乎是个问题。
  • 对不起!我的数据是什么(假)?
  • 在我的示例中,MyData 是一种将DataTable 设置为DataSource(一些硬编码值)的方法
猜你喜欢
  • 1970-01-01
  • 2023-03-21
  • 2017-09-24
  • 1970-01-01
  • 2021-08-18
  • 1970-01-01
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
相关资源
最近更新 更多