使用ExtJS获取单击的JSON元素的值

时间:2010-02-15 13:27:16

标签: json extjs nodes

我有一个JSON商店:

var jsonstore = new Ext.data.ArrayStore({
    fields: ['bla', 'blubb'],
    data: [ ['bla', 'blubb'],
            ['blabla', 'blublu'],
            ['blass', 'hallo'],
            ['bam', 'guckt'] ]
});

和extjs listview:

....
,{
       xtype: 'listview',
       name: 'abrufliste',
       store: jsonstore,
       id:"ladebereich",
       multiSelect: false,
       emptyText: 'nix da',
       reserveScrollOffset: true,
       columns: [ { header: 'Name',
                    width: .5,
                    dataIndex: 'NAME' } 
....

和点击事件:

Ext.ComponentMgr.get('ladebereich').on("click",function (sthis,index,node,e ){ 
    alert("node:  "+node.childNodes[0].childNodes[0].innerHTML);});

我想获得点击节点的值。

我确实通过

获得了价值
node.childNodes[0].childNodes[0].innerHTML
然而,这是一个糟糕的解决方案。

我想从我的jsonstore获取点击的元素, 有什么建议吗?

2 个答案:

答案 0 :(得分:1)

另一种方法是在listview中添加一个监听器来响应listview上的任何点击事件:

,{
   xtype: 'listview',
   name: 'abrufliste',
   store: jsonstore,
   id:"ladebereich",
   multiSelect: false,
   emptyText: 'nix da',
   reserveScrollOffset: true,

   listeners:
   {
       click: function(object, selectedIndex, node, event) {
           // Get the name corresponding to the selected row.
           var rowName = object.store.getAt(selectedIndex).get("Name");
       }
   },

   columns: [ { header: 'Name',
                width: .5,
                dataIndex: 'NAME' } 

答案 1 :(得分:0)

适用于

Ext.ComponentMgr.get('ladebereich').on("click",function (sthis,index,node,e ){

    var rec = jsonstore.getAt(index);
    alert(rec.get("NAME"));
});