Foro

Duda en treepanel

0
Hola a todos: Soy nuevo con extjs y estoy utilizando la v.3.3.0. Pero tengo la siguiente duda he leído y visto unos cuantos ejemplo en internet y aquí en quizzpot sobre los treepanel, pero ninguno esta vinculado a dos tablas en las BD, es decir: tabla 1 id_volumen nombre_volumen publicar_volumen tabla2 id_ejericicio id_volumen nombre_ejercicio publicar_ejercicio Donde un volumen va ha tener muchos ejercicios quedando de esta forma: Volumen 1 Ejercicios 1 Ejercicios 2 Ejercicios 3 Ejercicios 4 Volumen II Ejercicios 5 Ejercicios 6 Ejercicios 7 Ejercicios 8 Como podría hacer un treepanel pero que vincules esas dos tablas. NT: Si tienen algún ejemplo funcional mandármelo al email: monierjimenez@gmail.com Disculpe la ignorancia en este tema.
0
Hola: lgonzales Eso modules::run('login/index'); y lo otro es un ejemplo pero es que no entiendo en general que haces en ese code es decir como funcioana entiendo algo pero no se como llevarlo a mi estructura. de las ds tablas que puse en mi primer post con la tabla volumen y ejercicios: Mira yo tengo lo siguiente Page html ExtJS Example : ExtJS Tree using mysql database and PHP <!-- include ext-all.css --> <!-- include ext-base.js --> <!-- include ext-all.js --> <!-- include tree_ex.js --> <!-- tree will rendered to this element --> page .js Ext.onReady(function(){ var tree = new Ext.tree.TreePanel({ title: 'ExtJS Tree Example', autoScroll: true, animate: true, // disable drag and drop for this tree enableDD: true, containerScroll: true, dataUrl: '1.php', // the URL to get data for this tree width: 250, height: 400, useArrows: true, //muestra el root inicial rootVisible: false, // Root Node of tree root: { nodeType: 'async', text: 'Tree Root', draggable: true, // this value will send to server when this node expanded id: '0' } //root: new Ext.tree.AsyncTreeNode() }); // render to tree-div element (see point 2) tree.render('tree-div'); // expand root node of tree to get / see the top data from the database tree.getRootNode().expand(); }); page .php $conn = mysql_connect("localhost", "root","qwerty") or die("Could not connect to mysql server!"); mysql_select_db("cpav-aplicacion", $conn); $menu = 1;//$_POST['node']; $arr = array(); $consultaSQL = "SELECT sm.titulo, sm.ejercicio_id, sm.colaboracion_id FROM void_ejercicio sm, volumen me WHERE sm.volumen_id=me.volumen_id AND me.volumen_id=".$menu; $menus = mysql_query($consultaSQL) or die("Error:" . mysql_error()); while($obj = mysql_fetch_object($menus)){ $arr[] = $obj; } echo json_encode($arr); He tratado de llevar el code que me pusiste a esto pero ni atras ni alante he dado. Ayuda
0
:D perdon el modules::run('login/index'); quitalo pues eso es para confirmar que sea un usuario logeado en el sistema, perdon se me habia olvidado. xD y lo de node lo puedes pasar asi $node = explode('-', $_POST['node']); ya solo seria que filtres eso seria todo xD
0
Hola: Si lo que pasa es qeu por ejemplo hay cosas que me quedo que no se como llevarlas a mi estructura y que no veo como pasarle las cosas: modules::run('login/index'); $node = explode('-',$this->input->post('node')); podrias pasarme un ejemplo funcional. NT: Disculpen las dudas de novato.
0
Hola: lgonzales Es que me he quedado botado en lo del code php... podrias mandarme un ejemplo funcional simple que trabaje con dos tablas de la BD.
0
bueno en realidad el codigo php que te he puesto es totalmente funcional, todo el codigo que he puesto es funcional al 100% lo tengo probado, y tambien esta trabajando con dos tablas ahhhh claro se me olvidaba el code php es para CI (CodeIgniter) pero no creo que se te sea dificil pasarlo a una estructural teniendo el ejemplo, en todo caso pregunta y se ayuda.
0
este seria tu archivo .js Ext.ux.realstate.Tree = Ext.extend(Ext.tree.TreePanel, { initComponent: function() { this.rootID = this.rootID ? this.rootID : Ext.id(); Ext.apply(this, { animate:true, autoScroll:true, enableDD:true, containerScroll: true, rootVisible: false, border: false, loader: new Ext.tree.TreeLoader( { url: BASE_URL + 'realstate/createTree', createNode : function( attr ) { var NodeEvent = attr.leaf ? "clickLeaf" : "clickBranch"; attr.listeners = { click : function( obj, evt, scope) { this.ownerTree.fireEvent(NodeEvent, this, attr, attr.text); } }; return Ext.tree.TreeLoader.prototype.createNode.call(this, attr); } }), root : new Ext.tree.AsyncTreeNode({ expanded : true, draggable : false }) }); Ext.ux.realstate.Tree.superclass.initComponent.apply(this, arguments); new Ext.tree.TreeSorter(this, {folderSort:true}); this.addEvents( 'clickLeaf', 'clickBranch'); } }); y para hacerlo funcionar tendrias que poner esto donde lo quieres usar: this.TreeRealState = new Ext.ux.realstate.Tree(); // Tambien podrias usar // var TreeRealState = new Ext.ux.realstate.Tree(); // depende de como estes programando. // luego esto lo metes en items osea donde lo vas a mostrar // para finalizar haces el relayEvent // suponiendo que lo haz puesto en this.westPanelRealstate // pondrias this.westPanelRealstate.relayEvents(this.TreeRealState, ['clickLeaf', 'clickBranch']); this.westPanelRealstate.on({ 'clickLeaf' : function (nodeObj, nodeAttr, nodeText) { // aqui lo que deseas que haga cuando le den click a los nodos hijos // como puede ser abrir un tabpanel etc etc. } }); Bueno eso es todo, espero no haber sido muy complicado. cualquier cosa para eso esta el foro xD.
0
Hola la vinculacion la haces con tu backend, si usas php la haces con PHP si usas java lo haces con JAVA y asi sucesivamente lo unico que tienes que haces es las consultas correspondientes a tus DB y lo que viene a ser los Volumen los mandas como root y los Ejercicios serian los nodos Hijos.
0
Si pero como seria eso en php es decir a la hora de hacer la consulta lo hago bien o por lo menos es lo que creo pero parece que en el while no lo coje.... // select data from database with parent_id the parameter was sent $sql = "SELECT volumen_id id, nombre_volumen text FROM volumen WHERE publicar_volumen = 1"; $q = mysql_query($sql); $result = array(); while ($r = mysql_fetch_object($q)) { $qq = mysql_query("SELECT * FROM void_ejercicio WHERE volumen_id = " . $r->id); /*que pondria aqui es decir como haria pa mandar las cosas como deben de ser nodos e hijos*/ $result[] = $r; } echo json_encode($result);
0
Bueno mira aqui te pongo un ejemplo simple y facil de entender para hacer un arbol como el que deseas, lo normal es que el codigo este separado pero aqui lo he juntado para que puedas verlo en una sola, cabe recalcar que aunque esta junto es funcional. public function createTree() { modules::run('login/index'); $node = explode('-',$this->input->post('node')); $data_c = array(); if($node[0] == "xnode") { $cond = array( 'status' => 1, ); $query = $this->db->get_where('lgtics_realstate_types', $cond); if ($query->num_rows() != 0) { foreach ($query->result() as $row) { array_push($data_c,array( "id" => "A-".$row->id."-".$row->realstate_type_type, "text" => $row->name_type_realstate, "icon" => "/resources/images/icons/realstate/".$row->icono.".png", "leaf" => false )); } } } else if ($node[0] == "A") { $cond = array( 'realstate_owner' => $this->_pertenece, 'realstate_type' => $node[1] ); $query = $this->db->get_where('lgtics_realstate_items',$cond); if ($query->num_rows() != 0) { foreach ($query->result() as $row) { array_push($data_c,array( "id" => "F-".$row->realstate_id."-".$node[2]."-".$row->realstate_propietario, "text" => $row->realstate_private_address, "leaf" => true, )); } } } else { $data_c = array(); } echo json_encode($data_c); } Bueno ahora solo seria que lo apliques a tu aplicacion o simplemente te sirva de idea.

¿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.