Я не скажу много чепухи, я просто отправлю вам код.
Конкретный код заключается в следующем:
1. Передний конец
<%@ page language = "java" pageencoding = "utf-8" contentType = "text/html; charset = utf-8"%> <script type = "text/javascript"> $ (url () {$ ('#Good_type_treegrid'). '$ {pagecontext.request.contextPath}/admin/goodstypecontroller/treegrid.do?id=null', idfield:' id ', treefield:' text ', rownumbers: true, parentfield:' pid ', fit: trint, fitcolumns: true, погранично: Forsencolumn: 'id', width: 150, hidden: true}, {field: 'text', название: «Имя категории», ширина: 200}]], столбцы: [[{Field: 'pname', название: «Название превосходной категории», Width: 80}, {Field: 'seq', название: 50}, {Field: 'pid', title: 'Superior Category Id', ширина: 150, Hidden: True}, {Field: 'Action', Tilt: 'Action', ширина: 50, форматтер: функция (значение, row, index) {return formatString ('<img onclick = "Goald_Type_Editfun (/' {0}/'); src = "{1}"/>> ', row.id,' $ {pagecontext.request.contextpath} /style/images/extjs_icons/pencil.png ', row.id, '$ {pagecontext.request.contextpath}/style/images/extjs_icons/cancel.png');}}]], панель инструментов: [{text: 'batch import', iconcls: 'icon-remove', handler: function () {gobor_type_importfun ();}:}; 'Add', iconcls: 'icon-add', handler: function () {good_type_appendfun ();}}, '-', {text: 'expand', iconcls: 'icon-redo', handler: function () {var node = $ (##govelpe_treegrid '). {$ ('#GOODE_TYPE_TREEGRID'). TREEGRID ('expandall', node.cid);} else {$ ('#Goods_type_treegrid'). Treegrid ('Expandall');}}}, '-', {text: 'fold' iconcls: 'icon-undo: war-node:). $ ('#GOODE_TYPE_TREEGRID'). TreeGrid ('GetSelected'); if (node) {$ ('#Goods_type_treegrid'). Treegrid ('collapseall', node.cid);} else {$ ('#good_type_treegrid'). : 'refresh', iconcls: 'incon-reload', handler: function () {$ ('#good_type_treegrid'). treegrid ('reload');}}], OnbeforeExpand: function (row) {// Динамическая настройка url varl для расширения запроса = функция (строка) {// '$ {pagecontext.request.contextPath}/admin/goodstypecontroller/treegrid.do'; {e.preventDefault (); $ (this) .treegrid ('unselectall'); $ (this) .treegrid ('select', row.id); $ ('#good_type_menu'). Menu ('show', {left: e.pagex, top: e.pagey});}, Onexpand: function (row) {row) {row) {row) {row) $ ("#GOODE_TYPE_TREEGRID"). TREEGRID ('getChildren', row.id); if (kids.length <= 0) {row.Leaf = true; $ ("#GOODE_TYPE_TREEGRID"). TreeGrid ('refresh', row.id);}}});};}); id = "Govel_type_treegrid"> </table>2. Контроллер
@Requestmapping ("/reefgrid")@responsebodypublic list <goodstypepage> treegrid (goodstypepage goodstypepage) {if (null == goodstypepage || "" .equals (goodstypepage.getyd ()) || null == goodstypepage.getid () {goodstypage (null = null ") GoodStypeService.treeGrid (GoodStypePage);}3. Сервис
@Переопределить // Общедоступный список данных кэша <GoodStyPepage> treeGrid (goodStypePage GoodStypePage) {String hql = ""; if (null == GoodStypePage || "" .equals (goodStypePage.getId ()) || ". null order по t.seq ";} else {hql =" from goodstype t, где t.tgoodstype.id = '" +goodstypepage.getid () +"' Порядок t.seq ";} listpepe> newstypage); (brlist! = null && brlist.size ()> 0) {for (goodstype br: brlist) {goodstypepage r = new GoodStypePage (); Beanutils.copyProperties (Br, r); if (br.gettgoodtype ()! = null) {r.setpname (br.gettgoodtype (). getText ()); r.setpid (br.gettgoodtype (). getid ());} r.setstate ("recken"); nl.add (r);}} return nl;}}};