jqGrid treeGrid catch expanda collaps events

Eu uso jqGrid para epose algumas grandes trees. Agora quero lembrar os nós expandidos e recolhidos nos cookies

Então eu quero pegar expandir e recolher evento. Eu não consegui encontrá-lo no manual

Então resolvi dessa maneira

grid.find("div.treeclick").bind("click",function(e){ classs = $(this).attr('class'); //returns: //ui-icon treeclick ui-icon-triangle-1-s tree-minus //ui-icon treeclick ui-icon-triangle-1-e tree-plus if(classs.indexOf('-minus') != -1) alert ('Expand!'); else if(classs.indexOf('-plus') != -1) alert ('Collaps!') }); 

Alguém poderia propor outro caminho?

Atualmente, não há events ou retornos de chamada no jqGrid que possam ajudá-lo a detectar o colapso ou a expansão dos nós da tree.

Em geral, o código que você postou corrige os testes. No entanto você não está satisfeito completamente pela solução. Eu também acho que não é tão bom. O maior problema que vejo é que você testa qual ícone tem o botão, mas o ícone será alterado pelo manipulador original dos mesmos events na grade. A ordem das ligações deve ser muito importante.

No seu lugar, prefiro usar a técnica de subsorting em tais casos, quando nenhum evento existir. É muito fácil, mas é 100% eficaz.

A Tree Grid possui os methods expandNode e collapseNode, que são documentados. O método será chamado internamente pelo jqGrid também no caso de cliques no ícone do nó. O método expandNode chama reloadGrid para exibir a tree expandida.

Por isso, sugiro adicionar o seguinte código após a criação da Grade de Árvore:

 var orgExpandNode = $.fn.jqGrid.expandNode, orgCollapseNode = $.fn.jqGrid.collapseNode; $.jgrid.extend({ expandNode: function (rc) { alert('before expandNode: rowid="' + rc._id_ + '", name="' + rc.name + '"'); return orgExpandNode.call(this, rc); }, collapseNode: function (rc) { alert('before collapseNode: rowid="' + rc._id_ + '", name="' + rc.name + '"'); return orgCollapseNode.call(this, rc); } }); 

Você pode ver os resultados na demonstração .

ATUALIZADO: O jqGrid grátis suporta retornos de chamada e events, o que torna a sobrescrita acima de expandNode e collapseNode desnecessários. Ele suporta retornos de chamada já chamados antes ou depois da expansão ou do colapso de nós ou linhas. Os nomes dos retornos de chamada: treeGridBeforeExpandNode , treeGridAfterExpandNode , treeGridBeforeCollapseNode , treeGridAfterCollapseNode , treeGridBeforeExpandRow , treeGridAfterExpandRow , treeGridBeforeCollapseRow , treeGridAfterCollapseRow e os correspondentes jQuery Eventos jqGridTreeGridBeforeExpandNode , jqGridTreeGridAfterExpandNode , jqGridTreeGridBeforeCollapseNode , jqGridTreeGridAfterCollapseNode , jqGridTreeGridBeforeExpandRow , jqGridTreeGridAfterExpandRow , jqGridTreeGridBeforeCollapseRow , jqGridTreeGridAfterCollapseRow . Todos os retornos de chamada possuem um parâmetro: options , que possui duas propriedades: rowid e item . O item é o nó, que será expandido / recolhido.