0

ユーザー検索を使用して見つかった一連のファイルを表示するためにDynaTreeを使用しているWebアプリ(jQueryとともにJSPとサーブレット)があります。もちろん、ユーザーはさまざまな値を入力できるため、一致するファイルのセットも異なります。

だから、私のQ:

ツリーが静的にコード化されているとすると、JSPのJavaScriptでは次のようになります。

$("#tree").dynatree({
  ...
  children: [
    {title: "Folder 2", isFolder: true, key: "folder2",
      children: [
        {title: "Sub-item 2.1"},
        {title: "Sub-item 2.2"}
      ]
    },
    {title: "Item 3"}
  ]
...

この構造をプログラムで作成するにはどうすればよいですか?ルートを作成またはアクセスしてからaddChild(aNode)などを使用する方法を想定していますが、適切な例/参照が見つかりません。

誰かがこれをしましたか?ありがとう!

4

3 に答える 3

2

私はjsonオブジェクトを使用してYii2でそれを行いました。ツリー構造を初期化するために使用されるinitAjaxオプションを使用しました。

<div id="tree"></div>

<script>
$("#tree").dynatree({
    initAjax: {url: global+"companyAdmin/roles-master/get-department-and-menus",},
    checkbox: true,       // Show checkboxes.
    icon:false,
    selectMode: 3,           //3:multi-hier            
});
</script>

そして、JSONオブジェクトを生成するサーバー上に関数を記述します。

public function actionGetDepartmentAndMenus() {
    $responseData = array();
    $responseData['title']='ABC';
    $responseData['id']=1;
    $responseData['expand']=true;
    $responseData['children']['title']='ABC';
    $responseData['children']['id']=1;
    $responseData['children']['expand']=true;
    echo json_encode($responseData);
}

参照

于 2017-08-28T13:31:20.440 に答える
1

動作するようになりました。jQueryは次のとおりです。

    $('#findFiles').click(function() {  // Locate HTML DOM element with ID "findFiless" and assign the following function to its "click" event...
    chosenSite = document.getElementById("siteName").value;
    searchVal = document.getElementById("searchFor").value;
    searchTyp = document.getElementById("searchType").value;
    $.get('FileSearchServlet', {siteName: chosenSite, searchFor: searchVal, searchType: searchTyp}, function(responseJson) {    // Execute Ajax GET request on URL of "FileSearchServlet" and execute the following function with Ajax response JSON...
        //-- toClient
        var resultsToClientNode = $("#tree").dynatree("getTree").selectKey("resultsToClient");
        resultsToClientNode.removeChildren();
        toClientFilenames = responseJson.toClient;  //0-N filenames
        $.each(responseJson.toClient, function() {
            resultsToClientNode.addChild({
              title: this
            });
        });         
       ...

応答のJSONは次のとおりです(Firebug> Net> XHRを使用して表示します):

fromClient
["O_TE015308_XX_343_182754070041.OLD", "O_TE015308_XX_343_182755030040.OLD", "O_TE015308_XX_353_131142014034.OLD"]

toLab
[]

fromLab
[]

toClient
["R_TE015308_XX_340_154659.OLD"]
于 2012-01-18T15:13:24.927 に答える
0

プラグインのchildren属性dynatreeは単純なjSon構造です。詳細情報なしであなたの質問に答えるのは難しい。ただし、生成されたhtmlを表示する前にサーバー側でこのjSonデータを作成するか、を使用ajaxしてこのjSonデータを取得するために何かを呼び出すことができます。

あなたが望むものに応じて、それを生成するいくつかの方法があります。

これで理解できない場合は、ノードを動的に作成するときに、より明確な情報を提供してください。

于 2012-01-11T21:24:34.697 に答える