2017-01-27 7 views
0

私はノードの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

これを達成しようとするいくつかの方法があります。SettingsCookiesがない場合

<dvx:ASPxTreeList ... > 
... 
    <SettingsCookies Enabled="true" StoreSelection="true" /> 
... 
</dvx:ASPxTreeList> 
    1. 設定ASPxTreeList.SettingsCookies要素(おそらく最も簡単な解決策)、特にStoreSelection属性ASPxTreeList.ClientLayoutイベントを使用してTreeListレイアウトを手動で保存して復元してみてください。イベントハンドラを最初に定義します。

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

      このイベントを処理するには、次の例に従います。 ASPxTreeViewと同様に、ASPxGridViewは、e.LayoutData文字列内のノード/列形式のデータを提供し、DBに保存して元に戻すことができます。

    2. ストアTreeViewコントロールは、セッション中にノード鍵を選択し、コールバックを使用してそれらを復元:

      例:ASPxTreeList - How to store the selection between requests

    私は個人的にクッキーに依存しないだろうと最初のメソッドの#2、#3をしようとするだろう。 #2はASPxGridViewでうまく動作していました。#3は複雑なASPxTreeViewセットアップで使用しています。これも隠れノードの選択を追跡します。

    リンクされたドキュメントの例は、コピーして変更するのに十分なはずです。そうでない場合は、あなたのために働いていないものをコメントしてください。

    HTH

  • +0

    fantastic mate!私はDBにしたいと他のものと一緒にリストを保存し、それを取得し、クライアントのレイアウトモードを設定ロードしています。 –

    +0

    @LandMaster素晴らしい!私はあなたがそれが働いてうれしいです。受け入れとupvoteありがとう。 – andrews

    関連する問題