gpt4 book ai didi

c# - 在 datagridview 中下拉 Combobox

转载 作者:太空狗 更新时间:2023-10-29 20:24:19 25 4
gpt4 key购买 nike

我已经为这个问题苦苦挣扎了太久,我已经看到了关于这个问题的所有答案,虽然我发现了几个,但似乎没有一个对我有用。所以我的问题的基础如下:我有一个 DataGridView,一旦双击另一个 DataGridView 单元格,它就会向自身添加一行。当此 DataGridView 添加行时,它会向自身添加 2 种类型的列,一种是 ComboBox,据说其中已经设置了一个集合(刚刚转到 ComboBox 数据网格中的选项并填充了它的集合)和一个复选框列,现在一旦我点击它们,它们都什么都不做,双击,多次点击你想要的点击次数但没有任何反应。我什至尝试了以下代码。

public static void combolist(DataGridView combogrid)            
{

var column = new DataGridViewComboBoxColumn();

DataTable data = new DataTable();

data.Columns.Add(new DataColumn("Value", typeof(string)));
data.Columns.Add(new DataColumn("Description", typeof(string)));

data.Rows.Add("item1");
data.Rows.Add("item2");
data.Rows.Add("item3");

column.DataSource = data;
column.ValueMember = "Value";
column.DisplayMember = "Description";

combogrid.Columns.Add(column);
}

即使我可以将 ComboBox 类型的新列添加到我的 DataGridView 它仍然是空的(或者看起来是因为我无法点击查看下拉列表)。我的数据 DataGridView gridview 属性设置为:

editMode:editOnEnter, readOnly:false.

我在这里缺少什么吗?为什么我不能填充或显示此 ComboBox?这个问题快把我逼疯了,我相信这是找到答案的最佳网站。我真的很感激……非常感谢。

好的,所以我确实需要从另一个角度看问题,我什至尝试将 ComboBox 绑定(bind)到数据源,但仍然没有显示任何内容!,即使绑定(bind)了相同的数据源一个普通的 ComboBox 得到想要的结果

DataGridViewComboBoxCell ComboColumn = (DataGridViewComboBoxCell)(combogrid.Rows[0].Cells[2]);

ComboColumn.DataSource = class.details.GetData();
ComboColumn.DisplayMember = "name";

DataGridView 中使用 ComboBox 时,我是否遗漏了一些基本步骤?

最佳答案

一些想法:

  1. 我已经测试了您使用 visual studio 2012 发布的代码,并通过单击具有空 DataGridViewButton 来执行代码。它对我有用,因为我得到了一个 DataGridComboBoxColumn,它有一个带有三个空条目的 ComboBox。我按如下方式扩展了代码并获得了三个命名条目:

        data.Columns.Add(new DataColumn("Value", typeof(string)));
    data.Columns.Add(new DataColumn("Description", typeof(string)));

    data.Rows.Add("item1");
    data.Rows[data.Rows.Count - 1].SetField("Value", "value1");
    data.Rows[data.Rows.Count - 1].SetField("Description", "description1");
    data.Rows.Add("item2");
    data.Rows[data.Rows.Count - 1].SetField("Value", "value2");
    data.Rows[data.Rows.Count - 1].SetField("Description", "description2");
    data.Rows.Add("item3");
    data.Rows[data.Rows.Count - 1].SetField("Value", "value3");
    data.Rows[data.Rows.Count - 1].SetField("Description", "description3");

    column.DataSource = data;

    您的代码似乎只是添加了一个名为“item1/2/3”的行,或者是在没有值的数据表中添加了第一列(“Value”,这不是您的显示值)填充给定值的行可以显示。最后我无法重现您无法打开下拉列表的问题(请注意我使用了一个空的 DataGridView 因为我不知道您的 DataGridView< 中还有什么).

  2. 我不知道发布的代码是否正是您遇到问题的那段代码。但是您写道,当单击一个单元格时,您向 DataGridView 添加了一行,并且当发生这种情况时,您添加了两列。您的意思是为每个添加的行向网格添加两列,还是仅表示该行由这两列组成?
    如果最后一个是正确的,在我看来这与发布的代码是一个类似的问题。您是否考虑过通过添加 DataGridViewComboBoxCellDataGridViewCheckboxCell 来手动创建行?我们有一个非常复杂的 DataGridViewUserControl,我们可以在其中动态添加不同的单元格类型,并且可以毫无问题地正确显示它们。但我们会手动创建所有行,手动将所需的单元格类型填充到行中,并且不会为列指定类型。

关于c# - 在 datagridview 中下拉 Combobox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19042962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com