2017-01-27 7 views
0

У меня есть Treeview, созданный в виртуальном режиме, который имеет 4 уровня узлов и на загрузке страницы загружаются корневой элемент и элементы первого уровня, и остальные будут загружаться на основе динамического использования события treeFolderList_VirtualModeCreateChildren.Как сохранить контрольное состояние элементов в Devexpress Virtual Treeview?

Это то, что я до сих пор

protected void treeFolderList_VirtualModeCreateChildren(object source, TreeViewVirtualModeCreateChildrenEventArgs e) 
{ 
    List<TreeViewVirtualNode> children = new List<TreeViewVirtualNode>(); 


    if (e.NodeName == null) 
    { 
     AppendChildNode(children, "root", "All Domains", false); 
    } 
    else 
    { 
     if (e.NodeName.Contains("root")) 
     { 
      PopulateChildNodes(false, children); 
     } 
     else 
     { 
      if (!(e.NodeName.StartsWith("u_"))) 
      { 
       PopulateUserChildNodes(false, children, GetDomainBase(e.NodeName), e.NodeName); 
      } 
      else 
      { 
       TreeViewVirtualNode tvNode = (TreeViewVirtualNode)treeFolderList.Nodes.FindByName(e.NodeName); 
       TreeViewVirtualNode tvNodeParent = (TreeViewVirtualNode)tvNode.Parent; 
       string tvParentNodeName = tvNodeParent.Name; 
       PopulateUserChildNodes(true, children, GetDomainBase(tvParentNodeName), e.NodeName); 
      } 
     } 
    } 
    e.Children = children; 
} 

Эта работа, как и ожидалось, и это создает дочерние элементы при расширении узлов соответственно. Моя проблема в том, что у меня есть флажки для каждого узла, и мне нужно иметь возможность сохранять Treeview таким образом, когда я перезагружаю/перенаправляю на страницу, это будет отражать выбранные мной узлы.

Есть ли способ достичь этого?

ответ

1

Есть несколько способов, чтобы попытаться достичь этого:

  1. ASPxTreeList.SettingsCookies Настройка элемента (вероятно, самое простое решение), в частности, атрибут StoreSelection:

    <dvx:ASPxTreeList ... > 
    ... 
        <SettingsCookies Enabled="true" StoreSelection="true" /> 
    ... 
    </dvx:ASPxTreeList> 
    
  2. Если SettingsCookies не попробуйте сохранить и восстановить макет TreeList вручную, используя событие ASPxTreeList.ClientLayout. Сначала определите обработчик события:

    <dvx:ASPxTreeList OnClientLayout="dvxTreeList_ClientLayout"... > 
    ... 
    </dvx:ASPxTreeList> 
    

    и следуйте примеру в документе, чтобы обработать это событие. Таким образом ASPxTreeView, а также ASPxGridView предоставляют данные формата узла/столбца в строке e.LayoutData, которые могут быть сохранены в БД, а затем восстановлены обратно.

  3. Храните TreeView выбранных ключей узлов в сессии и восстановить их с помощью функции обратного вызова:

    Пример: ASPxTreeList - How to store the selection between requests

лично я бы не полагаться на печенье и хотел бы попробовать методы # 2 и # 3 первых , # 2 хорошо работает для меня с ASPxGridView и # 3, которые мы используем в сложной настройке ASPxTreeView, которая также отслеживает выбор скрытых узлов.

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

HTH

+0

сказочный помощник! отлично работал. Сохранил список вместе с другими вещами, которые я хотел получить в БД, и извлек их, и установить режим макета клиента - Загрузка. –

+0

@ LandMaster Отлично! Я рад, что ты заработал. Спасибо за принятие и отмену. – andrews