本文主要是介绍jqgrid 树形菜单递归加载,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
/*** @author ty
* @param list 空的list
* @param sourcelist 有数据的list
* @param parentId 父级Id
* @param s 树形等级从1开始
*/
@JsonIgnore
public void sortList(List<Menu> sourcelist,List<Menu> list, String parentId,int s){
// 默认等级是1
// 遍历集合
for (int i=0; i<sourcelist.size(); i++){
Menu off = sourcelist.get(i);
if (parentId.equals(off.getParentId())){//如果传进来的id与getid相同就说明这是第一级
boolean bool = bool(off.getId(),sourcelist);
off.setLeaf(bool); //设置是否有下一级可以加载。
off.setExpanded(false);//设置是否默认打开
off.setLevel(s);//设置树层级级别
//树ID,如果树的等级不是1,其父ID不为null
String str = null;
if(s!=1){
str=off.getParentId();
}
off.setParent1(str);//设置父ID,第一级树没有父ID
off.setLaoded(true);//设置是否一次加载
list.add(off);//把数据添加到新的list里
if (!bool){
sortList(sourcelist, list,off.getId(),++s);//递归 加载下一级树
s--;
}
}
}
}
/**
* 判断是否有下级
* 如果有就返回false
* @param i 通常是getId
* @param list 有数据的list
* @return
*/
public boolean bool (String id,List<Menu> list){
boolean bool = true;
for(Menu y : list){
if(id.equals(y.getParentId())){
bool = false;
}
}
return bool;
}
JSP代码
<script type="text/javascript">
$(function(){
DrawJqGridTable();
})
function DrawJqGridTable(){
var ss=$("#xingming").val();
var test="test";
$("#table_list").jqGrid({
treeGrid: true,
treeGridModel: 'adjacency', //treeGrid模式,跟json元数据有关
ExpandColumn : 'name',//指定哪列(colModel中的name配置值)用于展开属性表格
ExpandColClick:true,
prmNames:{//自定义参数属性
page:"jpageno",//页码的参数名称
rows:"jpagesize",//行数的参数名称
sort:"jpagesort",//排序列名的参数名称
order:"jpageorder",//排序方式的参数名称
search:"jsearch",//是否是搜索请求的参数名称
// nd:"jnd", //已经发送请求的次数的参数名称
//id:"id", // 表示当在编辑数据模块中发送数据时,使用的id的名称
//oper:"oper", // operation参数名称
//editoper:"edit", // 当在edit模式中提交数据时,操作的名称
//addoper:"add", // 当在add模式中提交数据时,操作的名称
//deloper:"del", // 当在delete模式中提交数据时,操作的名称
//subgridid:"id", // 当点击以载入数据到子表时,传递的数据名称
//npage:null,
//totalrows:"totalrows" // 表示需从Server得到总共多少行数据的参数名称,参见jqGrid选项中的rowTotal
},
postData: {//查询区数据
"cchl":ss,
"keyword":test
},
mtype:"post",//请求类型
url:'${ctx}/sys/menu/jqgridlist',//请求数据的url
datatype:"json",//请求数据返回的类型
colNames:[//列名
"id",
// "序号",
"名称",
"链接",
"排序",
"可见",
"权限标识",
"操作列"
],
colModel:[//获取json数据,name必须小写,index索引允许大些但必须和json数据中相同
{name:"id",index:"id",align:'center',frozen:true,hidden:true,key:true},// frozen : true列冻结 hidden:true 隐藏列
// {name:"rowNum",index:"rowNum",align:'center',width:'50px',sortable: false},
{name:"name",index:"name",align:'center',width:'270px'},
{name:"href",index:"href",align:'center',width:'150px'},
{name:"sort",index:"sort",align:'center',width:'190px'},
{name:"iShow",index:"iShow",align:'center',width:'170px'},
{name:"permission",index:"permission",align:'center',width:'170px'},
{name:"aaa",index:"aaa",align:'center',width:'270px',
formatter: function (cellvalue, options, rowObject) {
return '<div class="padding_buttom1">'
+ '<input type="button" value="查看" class="btn mybtn_primary btn-xs" οnclick="detail(\''+rowObject.id+'\')"/>'
+ '<shiro:hasPermission name="sys:office:edit">'
+ '<input type="button" value="修改" class="btn mybtn_primary btn-xs" οnclick="onShow(\''+rowObject.id+'\')"/>'
+ '</shiro:hasPermission>'
+ '<shiro:hasPermission name="sys:office:del">'
+ '<input type="button" value="删除" class="btn mybtn_primary btn-xs" οnclick="ondelRow(\''+rowObject.id+'\')"/>'
+ '</shiro:hasPermission>'
+ '<shiro:hasPermission name="sys:office:add">'
+ '<input type="button" value="添加下级机构" class="btn mybtn_primary btn-xs" οnclick="onXiaJi(\''+rowObject.id+'\')"/>'
+ '</shiro:hasPermission>'
+ '</div>';
}
},
],
rowNum:100,//默认当前页显示数据条数
rowList:[100,200,500,1000],//页面显示数据自选列表
sortname:"",//默认排序列
viewrecords:true,//是否要显示总记录数
multiselect: true,//复选框
shrinkToFit:false,
// multiboxonly:true,//复选框单选
// footerrow: true,//开启汇总行(列汇总)
// gridComplete:columnSummary,//汇总函数
pager:"#pager_list",//页面信息显示位置
width:$(window).width()-1,
height:$(window).height()-139,
jsonReader:{//读取数据
root:"rows",//数据信息
total:"total",//总页数
page:"page",//当前页码
records:"records",//数据总条数
repeatitems:false
},
treeReader : {
loaded_field:"laoded",
level_field: "level",
parent_id_field: "parent1",
leaf_field: "leaf",
expanded_field: "expanded"
},
//右键触发事件
onRightClickRow:function(rowid,iRow,iCol,e){
// alert("右键"+rowid);
},
// //单机触发事件
// onCellSelect:function(rowid,iCol,cellcontent,e){
// alert("单机"+rowid);
// },
ondblClickRow:function(rowid,iRow,iCol,e){
// alert("双击"+rowid);
/* var parent = $("#table_list").jqGrid("getLocalRow", rowid));
alert(parent); */
},
// onSelectRow:function(rowid,status){
// alert("选中"+rowid);
// },
});
}
</script>
这篇关于jqgrid 树形菜单递归加载的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!