2010-02-15 9 views
0

J'ai un magasin JSON:Obtenir la valeur de l'élément JSON cliquée avec ExtJS

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

et un ExtJS listview:

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

et un événement click:

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

Je veux pour obtenir la valeur du nœud cliqué.

je reçois la valeur avec

node.childNodes[0].childNodes[0].innerHTML 

, mais thats une solution merdique.

Je veux obtenir l'élément cliqué de mon jsonstore, des suggestions?

Répondre

0

il fonctionne avec

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

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

Une autre façon est d'ajouter un écouteur à votre listview pour répondre à tous les événements de clic sur le 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' } 
Questions connexes