2011-06-16 11 views
5

Estoy tratando de sincronizar una vista de datos (ventana del explorador) con un árbol (árbol de directorios). Cuando hago clic en un elemento en mi DataView, me gustaría que el mismo nodo es seleccionado en el árbolextjs 4 árbol seleccione un nodo específico por su id. Interno (no por índice de registro)

El problema es que el uso de la tree.getSelectionModel().select(index) no me permite seleccionar el nodo por su id interna (el ID que proporcioné en mi arborestore), pero solo por el índice de registro ... Así que no puedo sincronizar ambas vistas ... Habría la solución de expandPath(), pero mi arbolado está alimentado por un base de datos relacional (id, name, parent_id, etc.), por lo que encontrar la ruta completa es (o podría ser) una carga pesada para el servidor (me gustaría evitar tener que proporcionar cualquier ruta ...).

Básicamente me gustaría ser capaz de decir "expanda el nodo en el que el 'id =' (o cualquier otra clave/valor de la treestore).

¿Es posible? ¿Hay alguna solución?

Gracias por leerme

Respuesta

9

El tree.getSelectionModel() seleccione la función (registro) puede aceptar una instancia de registro en lugar de un índice que haría algo como esto:!..

var record = tree.getRootNode().findChild('id_name','record_id',true); 
tree.getSelectionModel().select(record); 

para obtener más información sobre la función findChild, echa un vistazo a los documentos NodeInterface aquí: http://docs.sencha.com/ext-js/4-0/#/api/Ext.data.NodeInterface-method-findChild

0

también se puede utilizar para este selecteditemtree.data.id.

Cuestiones relacionadas