首页 > 代码库 > 树排序的存储过程
树排序的存储过程
easyui树的拖拽排序功能
easyui树中有拖拽功能
树结构如下:
一个行政区域对应一个单位,一个单位对应多个部门,每个部门下有相关人员,功能要求:
(1)行政区域没有子节点,点击text加载部门;(2)点击部门的text,如果有下级部门则加载部门,没有则加载人员;(3)树都有拖拽排序功能
1、前台页面:
<script type="text/javascript" src = http://www.mamicode.com/"js/lib/jquery-1.8.0.min.js"></script><script type="text/javascript" src = http://www.mamicode.com/"js/lib/jquery.easyui.min.js"></script>
<div data-options="region:‘center‘"> <ul id="orgs_tree" class="easyui-tree" ></ul> </div>
var orgs_tree_default = { url : ‘servlet/SearchServlet?dispatch=0‘, animate : true, onClick:function(node){ var url = "servlet/SearchServlet?dispatch=1";//默认加载地区的树 var isDeptTree = false; var unit_id ; //根据行政区划获取单位列表 $.getJSON(url,{regions_id:node.attributes.regions_id},function(data){ if(data.length > 1){ }else if(data.length == 0){ }else{ //点击部门树的text,加载树 $("#dept_tree").tree({ url:"servlet/SearchServlet?dispatch=2&unit_id=" + unit_id+"&id=0", //默认加载部门的树 onBeforeExpand:function(node,param){ $("#dept_tree").tree("options").url="servlet/SearchServlet?dispatch=2&unit_id=" + unit_id+"&id="+node.id; }, onSelect:function(node){ //当点击text的时候,展开子节点 $(this).tree("expand",node.target); } }); } }); }, onDrop:function(target, source, point){ //行政区域树的拖拽功能 var node = $("#orgs_tree").tree("getNode",target); // 将DOM对象转换为node //组装参数 var param = { //目标节点属性 targetId : node.attributes.regions_id , targetSort : node.attributes.regions_sort , //源节点属性 sourceId : source.attributes.regions_id , sourceSort : source.attributes.regions_sort, //操作方式3种,append:变更父节点,top:平级-上 bottom:平级-下 point : point}; //更新数据库,这个后台需要用到存储过程 var url = "servlet/ManagerServlet?dispatch=0"; $.post(url,param,function(data){ alert("success"); }); }};
2、java后台调用方法
public String dragRegionsSort(int target_id, int target_sort, int source_id, int source_sort,String operation) { String result = "排序成功"; conn= this.getConnection(); CallableStatement statement = conn.prepareCall("{call PRO_UPDATE_REGION_SORT(?,?,?,?,?)}"); try { statement.setInt(1, target_id); statement.setInt(2, target_sort); statement.setInt(3, source_id); statement.setInt(4, source_sort); statement.setString(5, operation); statement.execute(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return result ; }
3、存储过程
create or replace procedure "PRO_UPDATE_REGION_SORT"( target_id in number,--目标id target_sort in number,--目标排序号 source_id in number, --源id source_sort in number , --源排序号 operation in varchar2 --操作类型,之前还是之后)as p_tid number; p_sid number ; begin select regions_id into p_tid from tbl_regions t where t.regions_id = target_id; select regions_id into p_sid from tbl_regions t where t.regions_id = source_id; dbms_output.put_line(‘---目标id--‘||p_tid||‘---源id---‘||p_sid); if target_sort - source_sort = 1 then if operation = ‘top‘ then null; else update tbl_regions t set t.regions_sort = target_sort WHERE t.regions_id = source_id ; update tbl_regions t set t.regions_sort = source_sort WHERE t.regions_id = target_id ; end if ; elsif target_sort - source_sort = -1 then if operation = ‘top‘ then update tbl_regions t set t.regions_sort = target_sort WHERE t.regions_id = source_id ; update tbl_regions t set t.regions_sort = source_sort WHERE t.regions_id = target_id ; else null; end if; elsif target_sort - source_sort < -1 then if operation = ‘top‘ then update tbl_regions t set t.regions_sort = t.regions_sort + 1 where t.regions_sort >= target_sort and t.regions_sort < source_sort; update tbl_regions t set t.regions_sort = target_sort where t.regions_id = source_id ; dbms_output.put_line(‘---排序前目标sort--‘||target_sort||‘---源sort---‘||source_sort); dbms_output.put_line(‘---排序后目标sort--‘||target_sort||‘---源sort---‘||source_sort); else update tbl_regions t set t.regions_sort = t.regions_sort + 1 where t.regions_sort > target_sort and t.regions_sort < source_sort; update tbl_regions t set t.regions_sort = target_sort+1 where t.regions_id = source_id ; end if ; elsif target_sort - source_sort > 1 then if operation = ‘top‘ then update tbl_regions t set t.regions_sort = t.regions_sort - 1 where t.regions_sort > source_sort and t.regions_sort < target_sort; update tbl_regions t set t.regions_sort = target_sort - 1 where t.regions_id = source_id ; else update tbl_regions t set t.regions_sort = t.regions_sort - 1 where t.regions_sort > source_sort and t.regions_sort <= target_sort; update tbl_regions t set t.regions_sort = target_sort where t.regions_id = source_id ; end if; end if;end;
树排序的存储过程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。