簡體   English   中英

如何以編程方式單擊按鈕時檢查真實的extjs treepanel復選框?

[英]How to checked true extjs treepanel checkbox on button click programatically?

我有一個Extjs樹面板,在其中添加了許多層。 另外,我有一個包含搜索按鈕的搜索面板。 單擊搜索按鈕后,它將在extjs網格視圖中返回結果。

我想通過單擊gridviews行來顯示圖層,並將treepanel的復選框動態或以編程方式設置為true
我添加了樹狀面板

var layerTree = new Ext.tree.TreePanel({
    border: true,
    root: layerList,
    split: true,
    containerScroll: true,
    collapseMode: "mini",
    autoScroll: true,
    loader: new Ext.tree.TreeLoader({
        applyLoader: false,
        uiProviders: {
            "layernodeui": LayerNodeUI
        }
    }),
    root: {
        nodeType: "async",
        children: Ext.decode(treeConfig)
    },
    listeners: {
        "radiochange": function(node) {}
    },
    rootVisible: false,
    lines: false

});

我想像layernode.checked=true

謝謝Akatum你說

在網格配置中,您需要為itemclick事件設置偵聽器,當用戶單擊網格中的行時會觸發該事件。 在此偵聽器中,您需要從行記錄中獲取有關圖層的信息。 然后,您可以通過Ext.data.TreeStore getNodeById方法在樹中找到圖層節點,並將其選中的屬性設置為true

因此,在網格配置中,您將具有:

listeners: {
    itemclick: function(c, record) {
        // get layer id from clicked row record
        var layerId = record.get('layerId');

        // find layer node in tree by layer id
        var node = layerTree.getStore().getNodeById(layerId);

        // set node checked attribute to true
        node.set('checked', true);
    }
}

我嘗試了您的代碼,但無法正常工作。 我在這樣的代碼中添加了您建議的代碼

var grid = new Ext.grid.GridPanel({
     store: new Ext.data.JsonStore({
         fields: action.result.fields,
         listeners: {
             load: function() {
                 setTimeout(function() {
                     grid.getSelectionModel().selectFirstRow();
                 }, 100);
             }
         }
     }),
     frame: true,
     columns: action.result.columns,
     stripeRows: true,
     listeners: {
         itemclick: function(c, record) {
             var layerId = record.get('layerId');
             var node = layerTree.getStore().getNodeById(layerId);
             node.set('checked', true);
         }
     }
 });

在網格配置中,您需要為itemclick事件設置偵聽器,當用戶單擊網格中的行時會觸發該事件。 在此偵聽器中,您需要從行記錄中獲取有關圖層的信息。 然后,您可以通過Ext.data.TreeStore getNodeById方法在樹中找到圖層節點,並將其選中的屬性設置為true

因此,在網格配置中,您將具有:

listeners: {
    itemclick: function(c, record) {
        // get layer id from clicked row record
        var layerId = record.get('layerId');

        // find layer node in tree by layer id
        var node = layerTree.getStore().getNodeById(layerId);

        // set node checked attribute to true
        node.set('checked', true);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM