如何在CheckedComboBoxEdit中允许多个选择?

时间:2016-08-12 15:06:39

标签: c# winforms devexpress

我在我的应用程序中使用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; 
    } 
}

1 个答案:

答案 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列,那么它将在单元格中预期整数值,因此在编辑器中进行选择后会产生相同的错误。