视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
ligerUI---ListBox(列表框可移动的实例)
2020-11-27 22:24:54 责编:小采
文档


写在前面:

对于可移动的列表框,ligerui中也对其进行了封装,可以直接照着demo拿来用,不过那都是直接在页面上静态初始化的数据,那么如何从后台获取?

前面有了对ligerui的一些组件的使用经验后,在这里其实 对于从后台获取数据在前台页面进行显示,都大同小异。也不是很难。

即要么是在ligerui组件中直接使用其url属性向后台发送请求,要么是单独发送一个ajax请求拿到数据后,通过获取组件,然后设置其data属性。嘿嘿。

下面就直接使用url属性来发送请求吧。。。

前台页面:

<script type="text/javascript">
 var box1,box2;

 $(function() {

 //初始化8个listbox
 box1 = $("#listbox1").ligerListBox({
 isShowCheckBox: true,
 isMultiSelect: true,
 height: 140,
 //发送给后台的请求
 url: '${baseURL}/getDeviceByAll.action',
 });
 box2 = $("#listbox2").ligerListBox({
 isShowCheckBox: true,
 isMultiSelect: true,
 height: 140,

 });

 var tempData2 = [{id:1,text:"aa"},{id:2,text:"bb"}];

 //button点击事件
 $("#btn1").click(function(){
 setListBoxData(tempData2);
 });

 });



 function setListBoxData(tempData2){
 //貌似只能通过id来移除了 用removeItems不可以达到效果
 //例如移除id为1,2的然后添加到左边
 for(var i=0;i<tempData2.length;i++){
 box1.removeItem(tempData2[i].id);
 }
 box2.addItems(tempData2);
 }

 //===========listbox四个按钮点击相关函数===========
 function moveToLeft1()
 {
 var selecteds = box2.getSelectedItems();
 if (!selecteds || !selecteds.length) return;
 box2.removeItems(selecteds);
 box1.addItems(selecteds);

 }

 function moveToRight1()
 {
 var selecteds = box1.getSelectedItems();
 if (!selecteds || !selecteds.length) return;
 box1.removeItems(selecteds);
 box2.addItems(selecteds);


 }
 function moveAllToLeft1()
 {
 var selecteds = box2.data;
 if (!selecteds || !selecteds.length) return;
 box1.addItems(selecteds);
 box2.removeItems(selecteds);

 }
 function moveAllToRight1()
 {
 var selecteds = box1.data;
 if (!selecteds || !selecteds.length) return;
 box2.addItems(selecteds);
 box1.removeItems(selecteds);

 }




</script>
<style type="text/css">
 .middle input {
 display: block;width:30px; margin:2px;
 }
</style>
</head>
<body>

 <div>
 <div style="float:left;font-size:15px;width:150px;text-align: center">Support Devices:</div>
 <div style="margin:4px;float:left;">
 <div id="listbox1"></div>
 </div>
 <div style="margin:4px;float:left;" class="middle">
 <input type="button" onclick="moveToLeft1()" value="<" />
 <input type="button" onclick="moveToRight1()" value=">" />
 <input type="button" onclick="moveAllToLeft1()" value="<<" />
 <input type="button" onclick="moveAllToRight1()" value=">>" />
 </div>
 <div style="margin:4px;float:left;">
 <div id="listbox2"></div>
 </div>
 </div>

 <input type="button" value="点击" id="btn1">


</body>

后台action:

private JSONArray jsonArray;
 public JSONArray getJsonArray() {
 return jsonArray;
 }
 public String getDeviceByAll() throws Exception{
 List<Device> deviceList = deviceService.getAll(Device.class);

 jsonArray = new JSONArray();
 for(Device device:deviceList){
 JSONObject obj = new JSONObject();
 //listbox对应的数据格式要有text、id字段
 obj.put("id",device.getDevId());
 obj.put("text",device.getDevName());
 jsonArray.add(obj);

 }
 return SUCCESS;
 }

好啦,这样就成功了,当然 我这里是省略了后台如何将json数据传递到前台,因为在我写ligerui的其他组件(ligerGrid,ligerForm)的时候已经写过了,就不再重复说了

效果演示截图:(省略向左向右的移动效果图)

在不勾选数据的情况下,点击“点击”按钮,的效果图如下:

其实在移除的过程中,一开始使用的removeItems()方法,但是测试貌似不可以移除,故采用removeItem()的方法,根据id来移除。

下载本文
显示全文
专题