سؤال

ولدي التطبيق على شبكة الإنترنت (وحدات JSP وسيرفلتس جنبا إلى جنب مع مسج) التي أنا باستخدام DynaTree لإظهار مجموعة من الملفات تم العثور عليها باستخدام بحث المستخدم. ويمكن للمستخدم بالطبع وضع في قيم مختلفة، مما أدى إلى مجموعة مختلفة من ملفات مطابقة.

وهكذا، يا Q:

وبالنظر إلى أن شجرة يتم ترميز بشكل ثابت thusly في بلدي جافا سكريبت JSP ل:

$("#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 (الأنود) أو بعض من هذا القبيل، ولكن لا أجد جيدة سبيل المثال / المرجعية.

ولقد فعلت كل هذا؟ شكرا!

هل كانت مفيدة؟

المحلول 2

وحصلت على العمل. وهنا يكمن مسج:

    $('#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 في الاستجابة (استخدام الحرائق> نت> 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"]

نصائح أخرى

وأنا فعلت هذا مع 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);
}

المرجعي

والسمة children على المساعد dynatree هو بنية JSON بسيط. من الصعب الإجابة على سؤالك دون مزيد من المعلومات. ولكن يمكنك إنشاء هذه البيانات JSON على جانب الخادم قبل عرض لدت أتش تي أم أل أو يمكنك الاتصال باستخدام شيء ajax أن نعود هذه البيانات JSON.

وهناك عدة طرق لتوليد أنه، اعتمادا على ما تريد.

وإذا كان هذا لا تساعدك على فهم ذلك، يرجى تقديم معلومات أكثر وضوحا عندما تريد إنشاء العقد بشكل حيوي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top