easyui树节点拖拽排序的存储过程

easyui树的拖拽排序功能

easyui树中有拖拽功能

树结构如下:

一个行政区域对应一个单位,一个单位对应多个部门,每个部门下有相关人员,功能要求:

(1)行政区域没有子节点,点击text加载部门;(2)点击部门的text,如果有下级部门则加载部门,没有则加载人员;(3)树都有拖拽排序功能

1、前台页面:

<script type="text/javascript" src = "js/lib/jquery-1.8.0.min.js"></script>
<script type="text/javascript" src = "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;

 

转载于:https://www.cnblogs.com/estellez/p/4081897.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EasyUI是一种用于构建Web应用程序的用户界面框架。EasyUI提供了各种UI组件,其中包括一个可定制的文件上传组件,可以轻松地实现文件上传功能。 在EasyUI中,文件上传组件可以通过添加一些HTML标记和JavaScript代码来实现。首先,在HTML文件中需要添加一个 <input type="file"> 元素,用于选择要上传的文件。然后,使用EasyUI提供的JavaScript代码来处理上传操作。 EasyUI上传文件组件支持多文件上传。当用户选择一个或多个文件并点击“上传”按钮时,EasyUI通过Ajax或Iframe方式将文件上传到服务器,并在上传完成后获取服务器响应来回显上传结果。 下面是一个简单的EasyUI文件上传示例代码: ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>EasyUI 文件上传</title> <!-- 引入EasyUI样式和JavaScript文件 --> <link rel="stylesheet" type="text/css" href="http://www.jeasyui.net/easyui/themes/default/easyui.css"> <link rel="stylesheet" type="text/css" href="http://www.jeasyui.net/easyui/themes/icon.css"> <script type="text/javascript" src="http://www.jeasyui.net/easyui/jquery.min.js"></script> <script type="text/javascript" src="http://www.jeasyui.net/easyui/jquery.easyui.min.js"></script> </head> <body> <form id="uploadForm" method="post" enctype="multipart/form-data"> <input name="file" id="file" class="easyui-filebox" data-options="prompt:'选择文件', buttonText:'浏览', width:'200'"> <br><br> <button id="uploadBtn" class="easyui-linkbutton" data-options="iconCls:'icon-upload'">上传</button> </form> <script> // 绑定上传按钮事件 $('#uploadBtn').click(function() { $('#uploadForm').form('submit', { url: 'http://localhost:8080/upload', // 上传文件的地址 onSubmit: function() { $.messager.progress({text:'上传中,请稍候...'}); }, success: function(result) { $.messager.progress('close'); if (result.errorMsg) { $.messager.alert('上传失败', result.errorMsg, 'error'); } else { $.messager.alert('上传成功', result.successMsg); } } }); }); </script> </body> </html> ``` 在这个示例中,我们使用了EasyUI提供的文件上传组件 easyui-filebox 和链接按钮 easyui-linkbutton 。当用户点击上传按钮时,通过调用 form('submit', options) 方法提交表单,其中包括上传文件的地址、提交前的处理方法和上传成功后的处理方法。最后,通过弹出消息窗口来提示用户上传结果。 总之,EasyUI文件上传非常容易实现,可以大大简化Web应用程序的开发过程和提高用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值