DevExpress VGridControl和CheckedComboBoxEdit - 如何获取检查值?

时间:2014-09-11 10:16:59

标签: winforms entity-framework devexpress

在VGridControl中使用ComboBox时会出现奇怪的行为。

我有一个对象列表:

var samples = new List<Samples>();
samples.Add(new Samples {Id = 1, Name = "s1"});
samples.Add(new Samples {Id = 2, Name = "s2"});
samples.Add(new Samples {Id = 3, Name = "s3"});
samples.Add(new Samples {Id = 4, Name = "s4"});

VGridControl有一行,这一行有一个RowEdit = CheckedComboBoxEdit。

CheckedComboBoxEdit.ShowDropDown设置为“DoubleClick”。

然后:

repositoryItemCheckedComboBoxEdit1.DataSource = samples;
repositoryItemCheckedComboBoxEdit1.ValueMember = "Id";
repositoryItemCheckedComboBoxEdit1.DisplayMember = "Name";
row.Properties.Value = "2, 4";

Repro步骤:

  1. 当我按下拉按钮然后检查每个项目的CheckedState时 - 没关系。它显示正确的值;

  2. 当我只选择行(按行本身)并且不展开下拉列表时,所有项目的CheckedState都是“未选中”。

  3. 我检查使用:

    int checkedItems = 0;
    foreach (var item in repositoryItemCheckedComboBoxEdit1.GetItems().Cast<CheckedListBoxItem>())
    {
        if (item.CheckState == CheckState.Checked)
        {
            checkedItems++;
        }
    }
    

    那么,如何从CheckedComboBoxEdit获取选中的值?

1 个答案:

答案 0 :(得分:1)

我找到了一个简单的答案。要获取行值,您可以使用:

var s = vGridControl.GetCellValue(row1, vGridControl.FocusedRecord).ToString();

这显示了行的存储值。然后你可以将它转换成列表:

var list = s.Split(',').ToList();