{ display: "分机号", name: "extno", width:200,newline: true, type: "select",comboboxName: "agentidCombo

        ligerui学习问题记录

1483人阅读 评论(0) 收藏 举报
ligerui jsp grid form

针对新手,不喜勿喷。

ligerui使用过程中遇到的问题

一、select数据赋值方法:

(1)静态赋值:

定义变量var onOffOptions=[{text:"开通",id:1},{text:"未开通",id:0}];

其中id为select的值,text为下拉列表显示的文字,这个应该是控件默认的,每个子条目可以包含其他字段,但必须有text和id两个

{ display: '录音功能', name: 'recordtype',newline: true,type: "select",options: {data:onOffOptions}}

(2)静态赋值:

var onOffOptions=[{name:"开通",value:1},{name:"未开通",value:0}];

{ display: '录音功能', name: 'recordtype',newline: true,type: "select",options: {data:onOffOptions,valueField:'value', textField:'name'}},

同(1)中,只是此处传的data值中不是text和id,而是通过valueField和textField制定的字段,valueField为值,textField为显示的文字

(3)动态赋值
{ display: "分机号", name: "extno", width:200,newline: true, type: "select",comboboxName: "agentidCombobox",
editor: { type: 'select', url: 'accountaction!getaccountextno.action', parms :{exttype:0},valueField:'extno', textField:'extno'}
}

通过url去取值,parms为url对应的参数,如果参数为空可以省略,valueField和textField含义同上

(4)去除默认的空item

ligerUI 1.2.3中的select的通过data赋值时,会自动添加一个值为null显示为空的item,去掉这个默认的空的item的方法是修改\lib\ligerUI\js\plugins\ligerComboBox.js中的48行的“emptyText: '(空)', //空行”注释掉就可以了。

二、grid分页

(1)本地分页:

分页分为本地分页和服务端分页,服务端分页网上很多介绍了,此处就不讲了。我遇到的问题是标识了usePager:true,设置了pageSize:10但结果还是将多有的记录都显示在了第一页中。原来grid默认的分页方式是服务端分页,要用本地分页需要加上dataAction:'local'.

(2)分页后点击几次下一页后,再重新点击查询按钮时,下面的页数还是显示的之前选到那一页上

这个问题我的处理方式时,在查询函数中写一句

if(manager){
manager.changePage("first");
}

这句的意思是,判断manager是否为空,如果不为空,就将页码设置为第一页。“ /47”

这里的manager就是定义grid的变量,在demo中都是用这个名字定义的,g = manager = $("#searchgrid").ligerGrid({.....。

(3)grid赋值

也分为url赋值和data赋值两种方式,跟上面的selct赋值一样,url可以通过parms传参数,data就是直接将json对象赋值过来。

三、传值中文乱码

遇到的怪事是通过post提交的中文参数可以直接解析,但通过submit提交的中文就是乱码,网上的转码方式都试过了,什么URLDecoder、edcode转的还是不行,后来发现问题是jsp中 的form没有设置method=“post”,submit默认的提交方式应该是get的

四、传文件
<script src="../lib/jquery.easyui.min.js" type="text/javascript"></script>

用这个"$('#addFileForm').form('submit',..." 提交时,浏览器提示不支持form方法,加上上面这个js就可以了

$('#addFileForm').form('submit',{
url: "voiceexpressaction!sendvoiceexpress.action",
onSubmit:function(){
},
success: function(msg){
var m2=$.ligerDialog.question(msg);
setTimeout(function () { m2.close(); }, 1000);
if(msg=="发送成功")
dialog.hide();
}
});

form中定义enctype="multipart/form-data"可以直接支持imput的type="file"传文件到后台

<form id="addFileForm" name="addFileForm" method="post" enctype="multipart/form-data">
<div>语音文件:<input name="voicefile" type="file" id="voicefile" accept="plain,text/html,image/jpeg,image/gif,application/x-msexcel,application/msword"/><span class="STYLE1">*通过此次上传语音文件</span></div>
</form>

后台Action中直接定义变量,

private File voicefile;//上传的文件

private String voicefileFileName; // 上传文件名

并定义对应的get,set方法就可以直接使用FileUtils.copyFile(voicefile, new File(filepath));进行文件保存了,其中变量名voicefile要跟form中的input中的name完全一致

五、常用的js函数

//获取比当前时间早一天的时间
function setBegintimeDate(){
var d=new Date();
d.setDate(d.getDate()-1);
return d;
}
//获取比当前时间晚一天的时间
function setEndtimeDate(){
var d=new Date();
d.setDate(d.getDate()+1);
return d;
}
//验证电话号码是否规范
function isphoneno(s)
{
var patrn=/^((0((10)|(2\d{1})|([3-9]\d{2}))){0,1}[2-8]\d{6,7})|(0{0,1}(1[3,4,5,8])\d{9})$/;
if (!patrn.exec(s)) return false
return true
}

验证电话号码的正则表达式的意思是:带区号的话区号必须是010或02X或者03XX到09XX,是为了控制110、120等特殊号码,目前应该只有北京区号是010的,02的区号都是三维的,其他的区号都是四位的。区号以外的部分判断是2到8的数字一位加上(也是为了排除110、120等特殊号码)其他数字6或7位,有的地区电话是7位的有的是8位的。或者是手机号码带0或不带0的以13、14、15、18开头的加上9位数字。

function Todate(num){
//Fri Oct 31 18:00:00 UTC+0800 2008
num = num + ""; //给字符串后就一个空格
var date = "";
var month = new Array();
month["Jan"] = '01'; month["Feb"] = '02'; month["Mar"] = '03'; month["Apr"] = '04';
month["May"] = '05'; month["Jan"] = '06'; month["Jul"] = '07'; month["Aug"] = '08';
month["Sep"] = '09'; month["Oct"] = '10'; month["Nov"] = '11'; month["Dec"] = '12';
var week = new Array();
week["Mon"] = "一"; week["Tue"] = "二"; week["Wed"] = "三"; week["Thu"] = "四";

week["Fri"] = "五"; week["Sat"] = "六"; week["Sun"] = "日";
str = num.split(" "); //根据空格组成数组
date = str[5] + "-"; //就是在2008的后面加一个“-”

//通过修改这里可以得到你想要的格式
//date = date + month[str[1]] + "-" + str[2] + " " + str[3];
date = date + month[str[1]];
//date=date+" 周"+week[str[0]];
return date;
}

这个是将Fri Oct 31 18:00:00 UTC+0800 2008这种格式的日期字符串转换成2008-01-01这种格式的字符串

我就没搞明白同样是ligerui定义的date,submit直接提交在后台获取到的格式就是2008-01-01 00:00:00,但按下面的方式获取form中定义的date值取到的的格式就是Fri Oct 31 18:00:00 UTC+0800 2008,只好转一下。

var form = liger.get('searchForm');
var searchData = form.getData();
var datestr = searchData.searchtime;

如果在后台转的话可以用

Date begintime1=new Date(getRequest().getParameter("begintime"));
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String begintime = format.format(begintime1);

这个方式中的new Date(String)会提示方法过期了。如果不想提示可以在方法或类前面加上这句话忽略警告@SuppressWarnings("deprecation")

如果有谁遇到这个日期格式的问题有解决办法的话可以拿出来,大家也学习一下。

你可能感兴趣的:({ display: "分机号", name: "extno", width:200,newline: true, type: "select",comboboxName: "agentidCombo)