首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataGridViewComboBox值无效?

DataGridViewComboBox值无效?
EN

Stack Overflow用户
提问于 2012-06-12 01:54:59
回答 5查看 7.4K关注 0票数 3

我一直收到一个错误,上面写着DataGridViewComboBox value is not valid。它似乎也在一个无穷无尽的循环中:我将点击ok,它将不断弹出。我正在运行一个用C#和.NET编写的windows窗体应用程序的程序。有人知道如何修复这个错误吗?

以下是我的代码的一些部分:

代码语言:javascript
复制
// authorityTypeDataGridViewTextBoxColumn
// 
this.authorityTypeDataGridViewTextBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells;
this.authorityTypeDataGridViewTextBoxColumn.DataPropertyName = "AuthorityType";
this.authorityTypeDataGridViewTextBoxColumn.DataSource = this.AuthorityTypeBindingSource;
this.authorityTypeDataGridViewTextBoxColumn.DisplayMember = "Description";
this.authorityTypeDataGridViewTextBoxColumn.DisplayStyle = System.Windows.Forms.DataGridViewComboBoxDisplayStyle.ComboBox;
this.authorityTypeDataGridViewTextBoxColumn.Frozen = true;
this.authorityTypeDataGridViewTextBoxColumn.HeaderText = "AuthorityType";
this.authorityTypeDataGridViewTextBoxColumn.MaxDropDownItems = 100;
this.authorityTypeDataGridViewTextBoxColumn.Name = "authorityTypeDataGridViewTextBoxColumn";
this.authorityTypeDataGridViewTextBoxColumn.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.authorityTypeDataGridViewTextBoxColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.authorityTypeDataGridViewTextBoxColumn.ValueMember = "Value";
this.authorityTypeDataGridViewTextBoxColumn.Width = 121;
// 
// AuthorityTypeBindingSource
// 
this.AuthorityTypeBindingSource.DataMember = "AuthorityType";
this.AuthorityTypeBindingSource.DataSource = this.lookUpDataSet;

有人有什么建议吗?

下面是处理程序:

代码语言:javascript
复制
private void TaskSummaryGrid_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
    MessageBox.Show(this, e.Exception.Message);
    e.Cancel = true;
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-06-12 02:12:04

在某一时刻,您的DataGridViewTextBoxColumn看起来像是一个DataGridViewComboBoxColumn,因为您的ComboBox属性不属于TextBox列。

DataGridViewTextBoxColumn 没有:

代码语言:javascript
复制
.DataSource = this.AuthorityTypeBindingSource;
.DisplayMember = "Description";
.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox;
.MaxDropDownItems = 100;
.ValueMember = "Value";

我只能猜测手动编辑设计器文件会导致这种情况。

票数 0
EN

Stack Overflow用户

发布于 2013-08-29 19:12:47

是的,解决方案是使datagridviewcombobox单元格的值与您在后面的代码中得到的值相同。

如果我想显示typeof(int)值,我必须设置datagridviewcombobox单元格的属性,如下所示:

代码语言:javascript
复制
this.ComboboxCellcolumnName.ValueType = typeof(int); 

您得到的值类型(例如int)应该与您希望在组合框单元格中显示的值类型(int)相同。

票数 2
EN

Stack Overflow用户

发布于 2012-12-22 18:33:21

但是,如果您想要恢复到组合框列,则需要设置一些特殊处理来设置它。

你可以参考这里的MSDN文章,或者下面的例子:

MSDN: Binding Enums to DataGridViews

代码语言:javascript
复制
        InitializeComponent();

        // special setup for enum column
        DataGridViewComboBoxColumn stateColumn = dgLedger.Columns[0] as DataGridViewComboBoxColumn;
        if (stateColumn != null)
        {
            stateColumn.DataSource = Enum.GetValues(typeof(TransactionState));
        }
        _ledger = new BindingList<LedgerItem>();
        dgLedger.DataSource = _ledger;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10985108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档