我在我的应用程序中使用DevExpress控件。我正在使用checkedComboBoxEdit,但是当我想选择两个选项时,我在控件中直接有一个无效的值错误。有人知道为什么以及如何解决它? 谢谢!美好的一天!
private void checkedComboBoxEdit1_EditValueChanged(object sender, EventArgs e)
{
foreach (int items in checkedComboBoxEdit1.Properties.Items.GetCheckedValues())
Prueba(checkedComboBoxEdit1.Properties);
}
public void Prueba(RepositoryItemCheckedComboBoxEdit ri)
{
int cont = ri.Items.Count;
for (int i = 0; cont > i; i++)
{
var valor = ri.Items[i].Value;
}
}
答案 0 :(得分:0)
请仔细阅读文档并考虑在字符串数据类型的列中分配此控件,而不是某些数字列单元格。 来自文档:CheckedComboBoxEdit Class
编辑器的编辑值(BaseEdit.EditValue)标识所有 下拉列表中的选定选项。随着 RepositoryItemCheckedComboBoxEdit.EditValueType属性,你可以 指定是否将编辑值形成为字符串或列表。
希望此信息可以帮助您避免在网格控件中设置不正确的值,该控件在执行选择后显示错误值的验证消息。我通过指定数据源修改了this DX问题样本,并且在整数列中分配字符串后,行为与预期相同。
RepositoryItemCheckedComboBoxEdit ccb = new RepositoryItemCheckedComboBoxEdit();
List<Student> data = new List<Student>();
for(int i = 0; i < 3; i++)
{
data.Add(new Student() {Id=i, Name= $"Student {i}"});
}
ccb.EditValueType = EditValueTypeCollection.CSV; // It is default value
ccb.DataSource = new BindingSource(data, null);
ccb.ValueMember = "Id";
ccb.DisplayMember = "Name";
ccb.AllowMultiSelect = true;
ccb.EditValueChanged += Ccb_EditValueChanged;
//ccb.Buttons.Add(new DevExpress.XtraEditors.Controls.EditorButton());
//ccb.ButtonClick += Ccb_ButtonClick;
//ccb.Popup += Ccb_Popup;
gridView1.Columns["Name"].ColumnEdit = ccb; // I have changed it from "ID" column to "Name"
如果你将它分配给ID列,那么它将在单元格中预期整数值,因此在编辑器中进行选择后会产生相同的错误。