1

私はsmartgwt2.5を使用しています。データベースからjsonをフェッチしてツリーを構築するデータバインドされたツリーグリッドがあります。これは正常に機能します。問題は、たとえば、親を変更しようとしたときです

最初は、ツリーは次のようになります。

ここに画像の説明を入力してください

dbからフェッチされた私のjson:

[{"id":"a","ReportsTo":"root","isFolder":"true","isOpen":"false"},{"id":"b","ReportsTo":"c","isFolder":"false", "isOpen":"false"},{"id":"c","ReportsTo":"root","isFolder":"true","isOpen":"true"},{"id":"d","ReportsTo":"a","isFolder":"false","isOpen":"false"}]

bの親を変更した後(フォルダcでbをドラッグしてcにドロップ)、すべてのリーフがフォルダを取得します。

http://i.stack.imgur.com/lLHdX.png

これはサーバーに送信されます:

{
12:46:52,773 INFO  [stdout] (http--127.0.0.1-7443-4)     "dataSource":"isc_RestDataSource_0", 
12:46:52,773 INFO  [stdout] (http--127.0.0.1-7443-4)     "operationType":"update", 
12:46:52,773 INFO  [stdout] (http--127.0.0.1-7443-4)     "data":{
12:46:52,773 INFO  [stdout] (http--127.0.0.1-7443-4)         "id":"b", 
12:46:52,773 INFO  [stdout] (http--127.0.0.1-7443-4)         "ReportsTo":"c", 
12:46:52,773 INFO  [stdout] (http--127.0.0.1-7443-4)         "isFolder":false, 
12:46:52,773 INFO  [stdout] (http--127.0.0.1-7443-4)         "isOpen":"false"
12:46:52,773 INFO  [stdout] (http--127.0.0.1-7443-4)     }, 
12:46:52,773 INFO  [stdout] (http--127.0.0.1-7443-4)     "oldValues":{
12:46:52,773 INFO  [stdout] (http--127.0.0.1-7443-4)         "id":"b", 
12:46:52,773 INFO  [stdout] (http--127.0.0.1-7443-4)         "ReportsTo":"a", 
12:46:52,773 INFO  [stdout] (http--127.0.0.1-7443-4)         "isFolder":false, 
12:46:52,773 INFO  [stdout] (http--127.0.0.1-7443-4)         "isOpen":"false"
12:46:52,773 INFO  [stdout] (http--127.0.0.1-7443-4)     }
12:46:52,773 INFO  [stdout] (http--127.0.0.1-7443-4) }

サイトの更新後、ツリーは正しく表示されます。

a
c
-b
-d

ツリーグリッドの私のコード:

パブリッククラスFavoritesGridはTreeGridを拡張します{

public FavoritesGrid() {
    setWidth("12%");
    setShowConnectors(false);
    setShowResizeBar(true);
    setCanReorderRecords(true);
    setCanAcceptDroppedRecords(true);
    setCanDragRecordsOut(true);
    setCanReparentNodes(true);
    setDragDataAction(DragDataAction.MOVE);
    setAutoSaveEdits(false);
    setAutoFetchData(false);
    setLoadDataOnDemand(false); //load everything

    setHeight("50%");

    RestDataSource ds = new RestDataSource();
    ds.setRecordXPath("/");
    ds.setDataFormat(DSDataFormat.JSON);

    OperationBinding fetch = new OperationBinding();
    fetch.setOperationType(DSOperationType.FETCH);
    fetch.setDataProtocol(DSProtocol.POSTMESSAGE);
    fetch.setDataFormat(DSDataFormat.JSON);

    OperationBinding add = new OperationBinding();
    add.setOperationType(DSOperationType.ADD);
    add.setDataProtocol(DSProtocol.POSTMESSAGE);
    add.setDataFormat(DSDataFormat.JSON);

    OperationBinding update = new OperationBinding();
    update.setOperationType(DSOperationType.UPDATE);
    update.setDataProtocol(DSProtocol.POSTMESSAGE);
    update.setDataFormat(DSDataFormat.JSON);

    ds.setOperationBindings(fetch, update, add);

    ds.setDataURL("/Kronos/Favorites");

    DataSourceTextField key = new DataSourceTextField("id", "id");
    key.setPrimaryKey(true);
    key.setRequired(true);
    DataSourceTextField parent = new DataSourceTextField("ReportsTo",
            "ReportsTo");
    parent.setRequired(true);
    parent.setForeignKey("id");
    parent.setRootValue("root");

    ds.setFields(key, parent);

            //define properties
    Tree tree = new Tree();
    tree.setDefaultIsFolder(false); //default the nodes should be leafs
    tree.setRootValue("root");  
    tree.setNameProperty("id");  
    tree.setIdField("id");  
    tree.setParentIdField("ReportsTo");  
    //the setOpenProperty also doesn't work
    //if i set it smartgwt displays all folder opened
    tree.setOpenProperty("isOpen"); 
    //setIsFolderProperty is being ignored after reparent, need to refresh the site for correction
    tree.setIsFolderProperty("isFolder"); 

    setDataProperties(tree);

    setDataSource(ds);

    fetchData();
}
}

誰かplsは私を助けることができますか?

4

0 に答える 0