jsTree------树形结构--点击节点异步加载数据(在节点上加载数据,而不是tree全面刷新数据)
1 页面div id 加载展示数据
function test() {
$('#jstree').jstree({
'core' : {
'check_callback': true,
"data" : function (obj, callback){
$.ajax({
type : "post",
url : "/building/building/getAreaBuild",//getAreaBuild=getTreeArea
dataType : "json",
success : function(data) {
console.info(data);
if(data) {
callback.call(this, data);
}else{
$("#jstree").html("暂无数据!");
}
}
});
}
},
"plugins" : [ "sort" ]
}).bind("select_node.jstree", function(event, data) {
var inst = data.instance;
var selectedNode = inst.get_node(data.selected);
//console.info(selectedNode.aria-level);
var level = $("#"+selectedNode.id).attr("aria-level");
if(parseInt(level) <= 4){
loadConfig(inst, selectedNode);
}
});
}
function loadConfig(inst, selectedNode){
var parent=selectedNode.parent;
var temp = selectedNode.text;
var aId=selectedNode.id;
if(parent==-1){
$.ajax({
url : "/building/building/getAreaBuild",
data : {
'aId' : aId
},
dataType : "json",
type : "post",
success : function(data) {
if(data) {
selectedNode.children = [];
$.each(data.children, function (i, item) {
var obj = {text:item};
//$('#jstree_div').jstree('create_node', selectedNode, obj, 'last');
inst.create_node(selectedNode,item,"last");
});
inst.open_node(selectedNode);
}else{
$("#jstree_div").html("暂无数据!");
}
}
});
}else{
alert("查看单元数据");
$.ajax({
url : "/building/building/getAreaBuildUnit",
data : {
'aId' : aId
},
dataType : "json",
type : "post",
success : function(data) {
if(data) {
selectedNode.children = [];
$.each(data.children, function (i, item) {
var obj = {text:item};
//$('#jstree_div').jstree('create_node', selectedNode, obj, 'last');
inst.create_node(selectedNode,item,"last");
});
inst.open_node(selectedNode);
}else{
$("#jstree_div").html("暂无数据!");
}
}
});
}
}
2 controller业务逻辑实现、
@Controller
@RequestMapping("/building/building")
public class BuildingController extends BaseController{
@Autowired
private BuildingService buildingService;
@GetMapping("/getTreeArea")
@ResponseBody
public Tree<BuildingDO> tree(Model model) {
Tree<BuildingDO> tree = new Tree<BuildingDO>();
tree = buildingService.getTreeArea();
return tree;
}
@PostMapping("/getAreaBuild") // @ResponseBody
@ResponseBody //public Tree<BuildingDO> getAreaBuild(@RequestParam("aId") String aId,Model model) {
public Tree<BuildingDO> getAreaBuild(Model model) {
String areaId=getUser().getAreaIds().get(0);
System.out.println("======================================333=========="+"444="+areaId);
Tree<BuildingDO> tree = new Tree<BuildingDO>();
tree = buildingService.getTreeAreaBuild(areaId);
return tree;
}
@PostMapping("/getAreaBuildUnit") // @ResponseBody
@ResponseBody
public Tree<BuildingDO> getAreaBuildUnit(@RequestParam("aId") String aId,Model model) {
System.out.println("======================================333=========="+aId);
Tree<BuildingDO> tree = new Tree<BuildingDO>();
tree = buildingService.getAreaBuildUnit(aId);
return tree;
}
3 maper.xml
<select id="getTree" resultType="com.qianyan.basicInfo.builds.domain.BuildingDO">
select * from build_unit
<where>
<if test="buildId != null and buildId != ''"> and build_id = #{buildId} </if>
</where>
</select>
<select id="getTreeArea" resultType="com.qianyan.basicInfo.builds.domain.BuildingDO">
SELECT
`basic_area`.`a_id` AS `id`,
`basic_area`.`a_name` AS `name`,
'0' AS `parent_id`
FROM
`basic_area`
</select>
<select id="getTreeAreaBuild" resultType="com.qianyan.basicInfo.builds.domain.BuildingDO">
SELECT
`basic_area`.`a_id` AS `id`,
`basic_area`.`a_name` AS `name`,
'0' AS `parent_id`
FROM
`basic_area`
<where>
<if test="_parameter != null and _parameter != ''"> and a_id = #{_parameter}</if>
</where>
UNION
SELECT
`basic_building`.`b_id` AS `id`,
`basic_building`.`b_name` AS `name`,
`basic_building`.`a_id` AS `parent_id`
FROM
`basic_building`
</select>
<select id="getAreaBuildUnit" resultType="com.qianyan.basicInfo.builds.domain.BuildingDO">
SELECT
`basic_area`.`a_id` AS `id`,
`basic_area`.`a_name` AS `name`,
'0' AS `parent_id`
FROM
`basic_area`
UNION
SELECT
`basic_building`.`b_id` AS `id`,
`basic_building`.`b_name` AS `name`,
`basic_building`.`a_id` AS `parent_id`
FROM
`basic_building`
UNION
SELECT
`basic_unit`.`r_dy` AS `id`,
`basic_unit`.`r_dy_name` AS `NAME`,
`basic_unit`.`b_id` AS `parent_id`
FROM
`basic_unit`
<where>
<if test="_parameter != null and _parameter != ''"> and b_id = #{_parameter}</if>
</where>
</select>