В дерево загружаю объекты
private void FillTree(List<Theme> thems)
{
Root.Nodes.Clear();
for (int i = 0; i < thems.Count; i++)
{
var theme = thems[i];
var node = Thems.AppendNode(new object[] { theme }, Root);
for (int j = 0; j < theme.Questions.Count; j++)
{
var question = theme.Questions[j];
Thems.AppendNode(new object[] { question }, node);
}
}
}
Когда пытаюсь изменить текст в ноде(по F2) , то хочу изменить свойство объекта которое там сидит, но в событии CellValueChanged объект obj(Theme) имеет не мой тип а string.
private void Thems_CellValueChanged(object sender, DevExpress.XtraTreeList.CellValueChangedEventArgs e)
{
if(e.Node != null)
{
var obj = (Thems.GetDataRecordByNode(e.Node) as ArrayList)[0];
if (obj != null)
{
if (obj.GetType() == typeof(Theme))
((Theme)obj).Caption = e.Value.ToString();
}
}
}
В событии FocusedNodeChanged переменная obj до изменения имеет мой тип , а после тип string
private void Thems_FocusedNodeChanged(object sender, DevExpress.XtraTreeList.FocusedNodeChangedEventArgs e)
{
if (e.Node == null)
return;
var obj = (Thems.GetDataRecordByNode(e.Node) as ArrayList)[0];
}
Перезатирается он что ли. Как изменить при редактировании свойство моего объекта?
Необходимо было для своих объектов реализовать интерфейс IVirtualTreeListData и назначит свойству DataSourse корневой элемент своей структуры либо же воспользоваться событиями дерева
VirtualTreeGetChildNodes, VirtualTreeGetCellValue, VirtualTreeSetCellValue
Ответ тут и тут
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости