【问题标题】:DataGridViewComboBoxColumn setting selected indexDataGridViewComboBoxColumn 设置选中索引
【发布时间】:2012-12-12 02:07:34
【问题描述】:

我只是无法让它工作。 我在 winforms 中有一个 datagridview,在我的这一列中是一个 DataGridViewComboBoxColumn。

在我的构造函数中我是这样设置的

DataGridViewComboBoxColumn column = (DataGridViewComboBoxColumn)RectangleGrid.Columns["Material"];

        DataTable data = new DataTable();

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

        foreach (Materials M in DataStructure.Active.Active_Materials)
        {
            data.Rows.Add(M.MaterialNr, (M.MaterialNr + 1).ToString() + " " + M.Material.Name);
        }

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

它实际上运行良好,只是在我想要的下拉框中没有选择任何内容。我已经用谷歌搜索了这个,例如尝试了这种方法:http://goo.gl/kBy8W 但没有成功,因为 EditingControlShowing 仅在我单击该框时发生,而不是在它第一次出现时发生(因此我可以在单击它后设置选定的索引,但这不好)。 CellFormatting 版本至少会更改值,但它只是将一个字符串放在那里,而不是我的数据源中的第一个索引。

我也试过了

column.DefaultCellStyle.NullValue = data.Rows[0]["Description"];
column.DefaultCellStyle.DataSourceNullValue = data.Rows[0]["Value"];

这似乎有效,但是当我选择下拉列表中的第一个索引时(所以下拉下拉列表,然后选择第一个索引,然后取消选择单元格)我从 ParseFormattedValue 收到一个错误,它说它无法转换“值”到 system.String。

这似乎在正确的轨道上,但我无法让它工作:http://goo.gl/VevA3

【问题讨论】:

    标签: winforms datagridview indexing datagridviewcombobox


    【解决方案1】:

    我最终以一个我不喜欢的非常肮脏的解决方案“解决”它,但它有点工作。

    我将 datagridview 绑定到数据表(不是数据库),所以我所做的是将事件处理程序连接到数据表中的 TableNewRow 事件。

    然后我在那个事件处理程序中做了这个

        private void NewRectangleInserted(Object sender, DataTableNewRowEventArgs e)
        {
            if (e.Row[0].ToString() == "")
            {
                e.Row[0] = 0;
            }
        }
    

    所以基本上当创建一个新行时,我将组合框的值设置为 0,除非用户通过在该特定单元格中添加一个值来创建该行(为什么我检查它是否等于“”)

    结果是,只要您突出显示新行或行中的任何单元格,组合框就会被填充。但是,底部的新行仍然有一个空白组合框,直到您突出显示它。

    不完美但好多了。糟糕的是,它必须通过黑客来完成!

    【讨论】:

    • 您可以使用此if (string.IsNullOrEmpty(e.Row[0].ToString())) 来确保字符串为空或空:)
    • 太棒了!我今天学到了一些东西,她甚至还没到午餐时间;-)
    • 然后你可以 +1 我的评论 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多