Foro

AGREGAR ITEMS A UN PANEL CON UN ONCLICK EN EL ARBOL

0
Hola que tal, tengo una duda  ... q puede que le pase a otros.

Lo que trato de hacer es  que  cada vez que de click ala hoja de un "arbol". pueda agregar un item a un panel center. 

ES LA SOLUCIÓN QUE DI PARA QUE NO CARGEN TODOS LOS ITEMS DE MI PANEL A LA VEZ Y CAUSE LENTITUD.

Sin embargoo  aún no me funciona del todo bien,  les dejo algo del codigo. en que peudo estar fallando, es ext 3.4
----------ESTA FUNCION ACTIVA EL ITEM DE MI PANEL DEPENDIENDO DE LA HOJA QUE DE CLICK-- funciona ! pero no agrega ---

tree.on('click', function(n){
    var sn = this.selModel.selNode || {}; // selNode es nulo en la selección inicial     
    // ignorar los clics en las carpetas y el nodo actualmente seleccionado
    /*Ext.getCmp('center').add(n.id);   

    ----------------PROBÉ CON ESTO        
    Ext.getCmp('center').doLayout();
    */

    center.add(New_Item);   ---------- Y ESTO :(
    center.doLayout();
    Ext.getCmp('center').layout.setActiveItem(n.id);       
});

 

Este es mi panel:

-------------------aqui tengo mis items pero, quiero hacerlo dinamico y que se agregen cuando den click y no desde el inicio-
var center = {
    //xtype   :   'panel',
    id  :   'center',
    region :   'center',
    layout: 'card',
       activeItem: 0,
    //height   :   600,
    border  :   false,
    margins   :   {
        bottom:0,
        right:3
    },
    items:[general/*,oro,usuarios,Atento,upload*/]//<--- 
};

 






0
Vas por el camino correcto, solo que en lugar de insertar el ID del nodo, necesitas crear un componente, por ejemplo.


var newPanel = Ext.getCmp('center').add({
   xtype : 'container',
   id    : 'panel-' + n.id,
   html  : 'Hola!'
});
Ext.getCmp('center').getLayout().setActiveItem(newPanel)

 

Saludos

0
Gracias pero lo que sucede es que yo inserto el Id del nodo para luego llamarlo con esto:
(Cabe resaltar que el Id del Nodo es: Usuarios)

Con esto Ejecuto mi var:  (funciona)
tree.on('click', function(n){
    var sn = this.selModel.selNode || {}; // 
    Ext.getCmp('center').layout.setActiveItem(n.id);       
}); 

var Usuarios= {
    id: 'Usuarios',
    title: 'Usuarios',
    height  : 460,
    html : 
    '<iframe id="frame-welcome" src="Conexion/grafico.php" border="0" width="100%" height="100%" '
    +'style="overflow:auto;width:100%;height:100%;" ></iframe>'
};

Llamo a esta variable  que esta definida como ITEM en el PANEL // y funciona.  
Lo que quiero esque no este definida y pueda crearla en el camino ya que  al estar definida como items, lo hace lento.
El detalle esta en como puedo agregar un item en el panel dandole click a una hoja. Y luego se ejecute con esto ( Ext.getCmp('center').layout.setActiveItem(n.id);  ) EL  ITEM TENDRA EL MISMO NOMBRE DEL ID.

 


Jesús Méndez: Pude agregar un item del panel dentro del onclick, Y TODO OK ... el problema esta en que los items que deseo que se agregen son : VARIABLES, es decir los defino en otro lado. u-u 15/10/2014
0
Acabo de solucionar mi problema... Muchas gracias !! Agradesco tu ayuda Crysfel, ya que me ayudo de mucha orientación.  Tuve que agregar unas lineas más de codigo para ejecutarlo como queria.
Por ultimo si alguien tiene el mismo problema dejo parte del codigo que tuve que agregar:

Elimino el item que existe.
var eliminar =  Ext.getCmp('center').items.first();
		Ext.getCmp('center').remove(eliminar,true);


	Ext.getCmp('center').add({
		id    : item,
		html  : web});

 Donde web es mi variable. 


Saludos,





Crysfel Villa: Genial, me alegro que solucionaste tu problema. 15/10/2014

¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook

Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.