我有一个带有"类型"和"值"列的DataGridView.用户选择数据类型,然后输入与该类型兼容的值,某些类型(例如"Text")接受任何字符串.其他类型(例如"是/否")仅限于可能值列表.对于每一行,我将"值"列中的单元格设置为自由形式类型的文本框或列表类型的组合框.DataGridView绑定到DataTable.
如果用户输入一种类型的值,但随后将该行切换为不允许当前值的其他类型,则会出现此问题.无论我尝试什么,我都无法清除Value cell.然后当我给单元格分配一个组合框时,我得到一个DataError,因为单元格的当前值是不兼容的.如何在将单元格从文本框更改为组合框之前清除该值?
public enum DataType
{
Text,
YesNo
}
public class IndexedItem
{
public string Name { get; set; }
public int ID {get; set; }
public string strID
{
get { return ID.ToString(); }
}
//constructors & other methods;
}
public static DataTable ParameterTable;
public List<IndexedItem> YesNoList;
Run Code Online (Sandbox Code Playgroud)
在表单构造函数中(dgvInputs是DataGridView):
ParameterTable = new DataTable("ParameterTable");
ParameterTable.Columns.Add("Type", typeof(DataType));
ParameterTable.Columns.Add("Value", typeof(string));
YesNoList = new List<IndexedItem>();
YesNoList.Add(new IndexedItem("Yes", 1));
YesNoList.Add(new IndexedItem("No", 0));
var D = (DataGridViewComboBoxColumn)dgvInputs.Columns[0];
D.ValueMember = "Value";
D.DisplayMember = "Display";
D.DataSource = …Run Code Online (Sandbox Code Playgroud)