如何通过编程方式检查按钮上的真正的extjs treepanel复选框?

时间:2013-12-22 05:08:30

标签: javascript asp.net extjs

我有一个Extjs treepanel,我添加了许多图层。另外,我有一个包含搜索按钮的搜索面板。单击搜索按钮时,它将在extjs gridview中返回结果。

我想通过点击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方法在树中找到图层节点,并将其checked属性设置为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);
         }
     }
 });

1 个答案:

答案 0 :(得分:0)

在网格配置中,您需要为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);
    }
}