您的位置:首页 > 产品设计 > UI/UE

前端框架Easey UI(二)表格控件的查找与删除操作消息提示对话框

2017-08-18 09:35 656 查看
全查

将后台所有的数据传播的前台,在之前hibernate和struts整合获取到数据的基础上,只需将访问时的路径设置到表格控件的url属性中,

同时保证表格的列属性field的值与后台模型(实体类)的属性值一致即可。

$("#dg").datagrid({
url : 'userAction!findUserWithPage',
columns : [ [ {
field : 'id',
title : '用户ID',
width : 80,
checkbox : true,
align : 'center'
}] ]

})

})


分页查询

在service写方法统计后台的数据的条数,返回值是int类型,但是调用dao层的方法返回值是Object,Object不能直接转成int类型因此先转成long再次转成int类型。

public static int getUserCount(){
Object obj=BaseDao.getObject("select count(*) from User");
long count=(Long)obj;
return (int)count;
}


该框架分页时前台有两个参数,在控制器中为接收参数定义两个integer类型的变量、并书写其set、get方法。该方法中有两个内容都要传送到前台且要转成Json格式,因此用map集合将两个参数写入,要与前台框架进行配合map的键必须是下面写的值,不能随便写。数据库的分页从0开始,前台从1开始,因此在传参时需要注意数值差。

public void findUserWithPage()throws Exception{
List<User> list=UserService.findUserWithPage((page-1)*rows, rows);
int count=UserService.getUserCount();
Map<String, Object> data=new HashMap<String,Object>();
data.put("rows", list);
data.put("total", count);
toJSON(data);
}


如果想对数据库中的值在前台显示时进行转变,例如性别在数据库中存的是0和1,想要在页面显示男女,需要在控制器中对查询出来的值依次遍历,根据值进行判断和修改,判断要写成并列的,每个判断用一条if语句。

for (User user : list) {
if ("1".equals(user.getSex())) {
user.setSex("男");
}
if ("0".equals(user.getSex())) {
user.setSex("女");
}
}


条件查询

在之前的网页上点击查询按钮,可以按照输入框中的内容进行查询,为按钮添加点击事件,运用id选择器拿到表格,配置load或者reload方法(该框架的方法都是通过配置),方法的参数通过id选择器获取对应标签的值,select标签的值因用到框架的自定义组合框,不能通过val()得到其中的值,需要用该控件的getValue方法得到。

$(function() {
$("#searchBut").click(function(){
$("#dg").datagrid('reload',{
usex: $("#sex").combobox('getValue'),
userName:$("#username").val()
})
})


load和reload方法区别

load param 载入并显示第一页的记录,如果传递了'param'参数,它将会覆盖查询参数属性的值。通过传递一些参数,通常做一个查询,这个方法可以被称为从服务器加载新数据。
$('#dg').datagrid('load',{
code: '01',
name: 'name01'
});
reload param 重载记录,跟'load'方法一样但是重载的是当前页的记录而非第一页。


修改service层,新添加参数获取前台数据,对前台传来的数据进行判断,在数据有值时将其附加到HQL语句中。

public static List<User>findUserWithPage(int page,int rows,String sex, String userName){
StringBuffer HQL =new StringBuffer("from User where 1=1");
if(!"".equals(sex)&&sex!=null){
HQL.append("  and   sex='"+sex+"'");
}
if(!"".equals(userName)&&userName!=null){
HQL.append("  and   username like '%"+userName+"%'");
}
return (List<User>) BaseDao.findWithPage(HQL.toString(), page, rows);
}


控制器层新建成员变量,属性名与前台方法的参数名一致,并创建其对应的set、get方法。

为什么前台数据传到后台没有乱码:strut内置的过滤器可以处理乱码问题。

删除

getSelections: none 返回所有被选择的行,当没有记录被选择时,将返回一个空数组。

为删除按钮添加事件,调用getselections方法,根据该方法返回值的长度判断有没有行被选中,没有数据时提示选择数据,为了方便查询,只传数组中的id值,循环遍历返回的数组获取拿其id值。调用getJSON第一个参数跳转到哪里,第二个参数是传给后台的值,第三个参数是一个方法,根据返回值判断是否删除成功,成功后重新刷新表格,不成功给出提示。

$("#removeBut").click(function(){
if($("#dg").datagrid('getSelections').length==0){
alert('请选择删除数据');
}
else{
var ids=[];
var array=$("#dg").datagrid('getSelections');
for(var i in array){
ids.push(array[i].id);
}
$.getJSON("userAction!delUserInfoById",{"id[]":ids},function(flag){
if(flag){
alert('删除数据成功')
$("#dg").datagrid('reload')
}else{
alert('删除数据失败')
}
})
}
})


service层创建对应的方法,通过id获取到要删除的对象,在调用删除方法删除该对象。

public static boolean delUserInfo(Integer id){
User user=(User) BaseDao.getObject("from User where id="+id);
try {
BaseDao.deleteObj(user);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}


控制器层,数组不能通过模型装配装,也不能通过list集合,因此用
getRequest().getParameterValues("id[]");
获取,参数是前台传参时的参数名称,

循环获取到的参数,并将参数转换为integer类型来调用service层的方法。

public void delUserInfoById() throws Exception{
boolean flag=false;
String ids[]=getRequest().getParameterValues("id[]");
if(ids.length>0){
for (String string : ids) {
flag=UserService.delUserInfo(Integer.parseInt(string));
}
}
toJSON(flag);
}


消息提示对话框

在帮助文档中窗口的消息窗体中可以找到,都是方法,在自己需要的地方直接拿去用,如在删除成功后显示,如何书写本文不做讲述,自己去帮助文档中查询即可。

在是否确认删除是,运用确认对话框,当在弹出的对话框中选择取消时,选中的内容需要回滚,不调用后台完成该功能,需要用表格的unselectAll方法将选择的行取消。

unselectAll none 取消选择所有页面的行

$.messager.confirm('删除确认', '是否确认删除', function(r){
if (r){
$.getJSON("userAction!delUserInfoById", {
"id[]" : ids
}, function(flag) {
if (flag) {
alert('删除数据成功')
$.messager.show({
title : '消息提示',
msg : '删除成功',
timeout : 5000,
showType : 'slide'
});

$("#dg").datagrid('reload')
} else {
alert('删除数据失败')
}
})
}else
{
$("#dg").datagrid('unselectAll');
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐