1

Я работаю с CTP-службами служб .Net RIA за июль 2009 года и привязывает объект Group => Department => Category к древовидному представлению, а затем имеет иерархическую визуальную визуализацию каждый из трех типов объектов.Сохранить SubTree Keep TreeView после обновления набора данных

Какова моя конечная цель для этого, чтобы включить функцию drag-n-drop, чтобы я мог быстро изменить свой список групп => department => categories и изменить их соответствующие отношения более интуитивным образом, чем то, что была ранее доступна.

Моя текущая проблема заключается в том, что когда я делаю команду drop и отправляю изменения, которые необходимо отправить в контекст данных, мое древовидное изображение перерисовывается и сворачивает листья. Есть ли способ, которым я могу использовать, чтобы избежать краха?

ответ

0

Я не делал много работы Silverlight, но из того, что я видел, у него довольно ограниченная объектная модель, поэтому некоторые из событий/свойств/методов для этого могут отсутствовать. Но вы можете попробовать сэкономить/восстановление состояния себя ... что-то похожее на следующем псевдокоде:

private expandeds as collection(); 

tree.OnNodeExpand() { 
    expandeds.add(tree.CurrentNode.key); 
} 

tree.OnNodeCollapse() { 
    expandeds.remove(tree.CurrentNode.key); 
} 

tree.AfterBind() { 
    for each key in expandeds { 
     tree.FindNodeByKey(key).expanded = true; 
    } 
} 
3

Я вывешиваю этот ответ чисто для тех, кто наткнуться на эту тему в поисках ответа. (Это было сделано в SL4)

вам нужно 2 списка:

  1. один, чтобы содержать полученные данные от службы (называется SOURCELIST)
  2. один содержит записи суперпользователя для отображения (DisplayList) к которому привязан ваш treeView.

вы также должны убедиться, что ваша операция загрузки имеет значение LoadBehaviour для объединения. , например:

domainContext.Load(domainContext.GetEntityQuery(), LoadBehavior.MergeIntoCurrent, CallbackFunction, userState); 

, так что все, что остается теперь обратить ваше domainContext.Load после каждого обновления и в вашем CallbackFunction заменить SOURCELIST с новым списком лиц, возвращенных веб-службы. Поскольку записи сверточного списка вашего списка отображают связь и иерархический шаблон данных, он все равно должен быть расширен в записи, которая была только что отредактирована.

Замечание Если вы пересобираете DisplayList с нуля, древовидная структура, очевидно, будет перерисовываться \ свернуть.

Надеюсь, это поможет кому-то. Янв