我一直收到一个错误,上面写着DataGridViewComboBox value is not valid。它似乎也在一个无穷无尽的循环中:我将点击ok,它将不断弹出。我正在运行一个用C#和.NET编写的windows窗体应用程序的程序。有人知道如何修复这个错误吗?
以下是我的代码的一些部分:
// 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;有人有什么建议吗?
下面是处理程序:
private void TaskSummaryGrid_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
MessageBox.Show(this, e.Exception.Message);
e.Cancel = true;
}发布于 2012-06-12 02:12:04
在某一时刻,您的DataGridViewTextBoxColumn看起来像是一个DataGridViewComboBoxColumn,因为您的ComboBox属性不属于TextBox列。
DataGridViewTextBoxColumn 没有:
.DataSource = this.AuthorityTypeBindingSource;
.DisplayMember = "Description";
.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox;
.MaxDropDownItems = 100;
.ValueMember = "Value";我只能猜测手动编辑设计器文件会导致这种情况。
发布于 2013-08-29 19:12:47
是的,解决方案是使datagridviewcombobox单元格的值与您在后面的代码中得到的值相同。
如果我想显示typeof(int)值,我必须设置datagridviewcombobox单元格的属性,如下所示:
this.ComboboxCellcolumnName.ValueType = typeof(int); 您得到的值类型(例如int)应该与您希望在组合框单元格中显示的值类型(int)相同。
发布于 2012-12-22 18:33:21
但是,如果您想要恢复到组合框列,则需要设置一些特殊处理来设置它。
你可以参考这里的MSDN文章,或者下面的例子:
MSDN: Binding Enums to DataGridViews
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;https://stackoverflow.com/questions/10985108
复制相似问题