AMcoder - javascript, python, java, html, php, sql

DOJO. Lazy բեռնման հանգույցներ LazyTreeGrid-ում. փնտրում են օրինակ կոդ

Ես փնտրում եմ օրինակ, թե ինչպես օգտագործել QueryReadStore-ը (կամ որևէ այլ խանութ) dojox.grid.LazyTreeGrid-ի հետ:

Ես ուզում եմ, որ կարողանամ ցուցադրել մեծ կառույցներ և բեռնել միայն անհրաժեշտ պահանջվող տվյալները սերվերից: Միայն բաց հանգույցների երեխաները պետք է բեռնվեն հատուկ սերվերի սկրիպտից:

Ես արդեն օգտագործում եմ QueryReadStore-ը dojox.grid.DataGrid-ի հետ և այն հիանալի է աշխատում :)

Օգնեք, շնորհակալություն:


  • Կարծես թե պետք է կարգավորեք ForestStoreModel: Կարող եք տեղադրել այն, ինչ ունեք: Եվ դուք օգտագործում եք նույն QueryReadStore-ը, ինչ DataGrid-ը: 13.02.2012

Պատասխանները:


1

Ահա մի երկարաշունչ բացատրություն/նմուշ՝ հիմնված որոշ բաների վրա, որոնք ես այժմ անում եմ: Սա ենթադրում է հիմնական հարմարավետություն Dojo 1.7 ոճի փաթեթների հետ (օրինակ, մենք ենթադրում ենք, որ լռելյայն Dojo փաթեթները ճիշտ են կարգավորվել):

Հաճախորդի կողմից (js ֆայլ)

require(["dojo/ready",
    "dojox/grid/LazyTreeGridStoreModel",
    "dojox/data/QueryReadStore",
    "dojox/grid/LazyTreeGrid"], function(ready, LazyTreeGridStoreModel, QueryReadStore, LazyTreeGrid) {
        ready(function() {
            var cellLayout = [
                {name: 'Name of fruit', field: 'name', width: '300px', defaultValue: ""},
                {name: 'Color of fruit', field: 'color', width: '100px', defaultValue: ""},
                {name: 'Size of fruit', field: 'size', width: '100px', defaultValue: ""}
            ];

            // This is the url on which your server will listen for GET requests
            var dataStore = new QueryReadStore({url: "url/to/load/rows"});
            var treeModel = new LazyTreeGridStoreModel({store: dataStore, childrenAttrs: ['children'], serverStore: true});

            var grid = new LazyTreeGrid({
                treeModel: treeModel,
                structure: cellLayout,
                autoHeight: 20}, "gridContainerId"); // you need to have a DOM element by that id
            grid.startup();
        }
    });

Սերվերի կողմից.

Ձեզ անհրաժեշտ է սերվերի կողմից մշակող, որը կլսի GET հարցումները url/to/load/rows-ում: Այդ հարցումները կունենան մինչև 3 պարամետր.

start    - 0-based index of the first item to return
count    - number of items to return
parentId - Id of the parent of the children items that are requested.
           Optional, not present for 1st call (because 1st-level objects have no parents).

Այդ մշակիչը կարող է գրվել ձեր սիրելի սերվերի լեզվով (այսինքն՝ C# ASP.Net MVC-ով, Ruby-ով և այլն)

Ձեր սերվերի մշակողի աշխատանքը կլինի հետևյալ 3 ատրիբուտները պարունակող json կառուցվածքը վերադարձնելը.

items       - Array containing the items you want to display.
              Each item represents a row in the grid. Each item should
              have at least some of the fields you specified in your layout
              and must have the 2 following characteristics:
                - Must have a "children" attribute. That is a bool value.
                  If true, the row is assumed to have children and will have
                  an expando left of it. The grid query the server for children when you expand it.
                  If false, the row is considered terminal, no expando is shown.

                - Must have a unique id. This will be the id that will be set in the "parentId"
                  param when querying the server for the children of that row. It must be stored
                  in the field referred to by the "identifier" attribute (see below).

identifier  - The name of the attribute of each item that contains its unique id.
numRows     - The number of total items existing on this level (not just the number of items you sent back).
              This is used to set the grid & scrollbar size and other UI things.

Հաճախորդի/Սերվերի հաղորդակցություն

Իմ նախորդ օրինակի վրա հիմնվելու համար, հենց որ ցանցը գործարկվի (հաճախորդի կողմից), այն կպահանջի նման բան.

GET url/to/load/rows?start=0&count=25

Սերվերը կվերադարձնի հետևյալը.

{
    "items":[
        {"name": "apple", "color": "red", "size": "small", "uniqueId":"a1", "children": true},
        {"name": "watermelon", "color": "green", "size": "big", "uniqueId":"b1", "children": false}
    ],
    "identifier": "uniqueId",
    "numRows":2
}

Ցանցը կցուցադրի 2 պտուղները: apple-ը կունենա ընդլայնում, բայց ոչ watermelon (շնորհիվ children հատկանիշի): Ենթադրենք, որ օգտվողը սեղմել է apple ընդարձակման վրա: Ցանցը կպահանջի իր երեխաներին.

GET url/to/load/rows?parentId=a1&start=0&count=25

Սերվերը կարող է վերադարձնել նման բան.

{
    "items":[
        {"name": "mcintosh", "color": "red-green", "size": "small", "uniqueId":"a2", "children": false}
    ],
    "identifier": "uniqueId",
    "numRows":1
}

Այնուհետև ցանցը կցուցադրի մեկ երեխա apple տողի տակ:

27.07.2012
  • Բարեւ Ձեզ! Ես օգտագործում եմ այս նմուշը, և էջը սառեցնում է. LazyTreeGreed-ը հարցումների անսահմանափակ քանակ է դարձնում API-ում: Դոջո (x) 1.11. Ի՞նչ շտկել այս սխալը: 25.05.2016

  • 2

    Կարծում եմ, որ ես ունեմ այն, ինչ դուք փնտրում եք այստեղ: QueryReadStore-ը dojox.grid.LazyTreeGrid-ի միջոցով QueryReadStore-ի օգտագործման հիանալի օրինակ կոդ է, և այն նույնպես ամբողջությամբ բացատրվում է քայլ առ քայլ:

    Խնդրում ենք տեսնել այստեղ՝ http://livedocs.dojotoolkit.org/dojox/grid/LazyTreeGrid

    Հուսով եմ, որ սա կխթանի ձեր աշխատանքը, և դուք կկարողանաք իրականացնել ձեր նպատակները:

    Հարգանքներով

    Ֆրենկ.

    12.02.2012
  • Thx. Ես դա տեսել եմ նախկինում: Փնտրում եմ նաև սերվերի կողմից խանութի տվյալների աղբյուրի կոդ: Առայժմ ես տեսել եմ միայն հաճախորդի կողմից տվյալների հետ կապված օրինակներ: Ես կցանկանայի իմանալ, թե ինչպես են գրառումները բեռնվում կտորներով ըստ պահանջի: 12.02.2012
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..