Почему GridLookUpEdit показывает [EditValue равно нулю]
У меня есть DataTable
в качестве источника данных для GridLookUpEdit
,
private void MachineTreeCellEdit(object sender, GetCustomNodeCellEditEventArgs e) {
Contract.Assume(sender != null, "sender is null.");
Contract.Assume(e != null, "e is null.");
if (e.Node != null) {
var element = e.Node.GetValue(0) as XElement;
if (element == null) {
// no element object
return;
}
if (element.Name.LocalName == "host" && e.Column.Name == "machineViewGroups") {
GridLookUpEdit lookup = new GridLookUpEdit();
lookup.Properties.DisplayMember = "Name";
lookup.Properties.ValueMember = "Name";
lookup.Properties.DataSource = GetLookupDataSource(element);
lookup.Properties.PopulateViewColumns();
e.RepositoryItem = lookup.Properties;
}
}
}
private DataTable GetLookupDataSource(XElement element) {
var configsTable = new DataTable("Configurations");
configsTable.Columns.AddRange(new DataColumn[] {
new DataColumn("Name", typeof(string)),
new DataColumn("Version", typeof(string))
});
var groupAncestor = element.Ancestors("group").First();
var configOptions = Presenter.Repository.Root
.Elements("group")
.Where(el => el.Attribute("name").Value == groupAncestor.Attribute("name").Value)
.SelectMany(el => el.Descendants("cfg"))
.ToList();
for (int option = 0; option < configOptions.Count; option++) {
var newRow = configsTable.NewRow();
newRow["Name"] = configOptions[option].Attribute("name").Value;
newRow["Version"] = configOptions[option].Element("version").Value;
configsTable.Rows.Add(newRow);
}
configsTable.AcceptChanges();
return configsTable;
}
Хотя у меня есть таблица данных, созданная со строками, почему GridLookUpEdit
всегда отображать [EditValue is null]
вместо данных в таблице данных?
Кроме того, когда я нажимаю стрелку раскрывающегося списка, всплывающее окно не отображается. Это скажет мне, что источник данных пуст. Тем не менее, я проверил данные таблицы данных, которые я ожидаю.