作为一个蹩脚前端,已经接触过一段时间EasyUI了,这个框架其实很老了,基本都是一些原生JS操作。我也只能一葫芦画瓢了,有些前端的原理其实并不是那么的理解,但是一般来说基本还是能搞定的,百度下,copy下。这边就记录下一些坑,以便日后查看,也有个借鉴。
DataGrid 组件
定义 表 :
工具栏定义
$("#id").datagrid({ //指定ID
method : 'post', --- 请求方式
url : 'xxxx', -- 路径
fitColumns : false,
border : true,
pagination : true,
idField : 'noticeId',
pageSize : 30,
pageList : [ 30, 40, 50, 60, 70 ],
rownumbers : true,
singleSelect : true,
collapsible : true,
striped : true,
remoteSort : true,
queryParams : { -- 默认请求参数
xxx: xx,
yyy : yy
},
view:detailview,
detailFormatter:function(index,row){
return '
';
},
onLoadSuccess: function, -- 请求成功之后
toolbar : '#toolbar_id', -- 工具栏
frozenColumns : [ [ {
title : '字段描述', -- 描述
field : 'xxx',
hidden : true,
width : 120,
align : 'center',
halign : 'center',
sortable : true
},
...
]]
});
//1、动态修改URL
var op = $("#id").datagrid("options");//获取 option设置对象
op.url = url;
// 重新加载 带参数parms{a:a,b:b}
$('#id').datagrid('reload', parms);
//2、动态修改字段 colums =[[{..}]];
$("#id").datagrid({columns:colums});
ComBox组件 异步请求加载数据
var data; // 异步请求
$.ajax({
method:'get',
url:'xxx',
dataType : 'json',
type : 'POST',
async:false,
success: function (data){
data = data;
}
});
$("#id").combobox({
prompt:'输入关键字后自动搜索',
method:'get',
url:'xxx',
editable:true,
valueField:'value', // 传入后台的值
textField:'text', // 前端展示的值
onChange:function(value) { // 监听值改变时的方法
},
loadFilter:function(data) { // 数据过滤
var d = [];
for (var i = 1; i < data.length; i++){
if(){ // 频道条件
d.push(date);
}
}
return d;
},
onLoadSuccess:function(){
var data = $('#id').combobox('getData');
$("#id").combobox('select',data[0].value); // 设置默认值
}
});
$("#id").combotree({ // 多选
method:'get',
url:'xxx',
editable:false,
checkbox:true,
multiple: true,
loadFilter:function(data) {
}
});
combox 加载数据的方式 (不是提前加载出来,而是根据客户的输入去后台请求在渲染组件的)
// 第一种方式
function comboxDateLoad1(param, success, error) {
//获取combobox输入的值
var q = param.q;
if (q == undefined || q == "" || q == null)
return false;
$.ajax({
url: "xxx",
type: "get",
success: function (data) {
//执行loader的success回调函数(装载数据)
success(data);
console.log(data)
},
//异常处理
error: function (xml, text, msg) {
error.apply(this, arguments);
}
});
}
// 第二种方式
function comboxDateLoad2(param, success, error) {
//获取combobox输入的值
var q = param.q;
var field2= $("#field2").combobox('getValue');
if (q == undefined || q == "" || q == null)
return false;
$.ajax({
url: "xxx",
type: "post",
data: { field1: q ,field2:field2},
dataType: "json",
success: function (data) {
//执行loader的success回调函数(装载数据)
success(data.rows);
},
//异常处理
error: function (xml, text, msg) {
error.apply(this, arguments);
}
});
}
$('#comboxId').combobox({
prompt:'输入关键字后自动搜索',
required:true,
method:'get',
url:'',
mode: "remote",
editable:true,
valueField:'id',
textField:'text',
loader: comboxDateLoad,
filter: function(q, row){
var opts = $(this).combobox('options');
return row[opts.textField].indexOf(q) != -1;
}
});
combotree用法支持多选,而且可以控制同一个节点下的子节点只能勾选一次,不同的节点下的子节点可以允许多选
//树状下拉框列表 - 支持多选
$("#combotreeId").combotree({
method:'post',
url:'xxx',
editable:false,
valueField:'id',
textField:'text',
lines: true,
multiple : true,//设置可以多选,显示多选框,不设置不会出现多选框
checkbox:true,//显示多选框
cascadeCheck:true,
onlyLeafCheck : true,//只在叶子节点显示多选框
onBeforeSelect:function(node){
if(node.parentId<=0){
return false;
}
},
onBeforeCheck : function(node, checked){//控制只能选一项
if(checked){//当前为选中操作
var nodes = $(this).tree("getChecked");
//控制同一节点只能选一项,选中某一项后后面不能再勾选
for(var i=0; i
其他 提示消息框,带有确认按钮的,以及可以自定义按钮的提示框
// // 指定关闭对应的title页面 此方法用于
js控制文件上传,支持动态渲染等
var files = []; // 用于存放上传的文件信息
// 第1步
$("#filebutton").click(function(){
$("#uploadFile").click(); // 触发添加文件 ,
});
// 注意;在上传文件时,可能会触发file的change的事件,上次第二次可能导致change触发不了
// 第2步
$("#uploadFile").change(function(){
if (!validateFile("uploadFile")){ // 文件校验
return ;
}
uploadFile();
});
function validateFile(id){ // 文件校验
var fileObject=$("#"+id);
var filepath=fileObject.val();
var fileArr=filepath.split("//");
var fileTArr=fileArr[fileArr.length-1].toLowerCase().split(".");
var filetype=fileTArr[fileTArr.length-1];
if(filetype!="xls"&&filetype!="txt"){ //指定校验的文件 如:txt,xls..
fileObject.focus();
//BootstrapDialog.show({title:'操作提示',message:"文件格式不合法"});
$.messager.alert("操作提示","仅支持xxx文件上传","warning");
var file = $("#"+id) ;
file.after(file.clone().val(""));
file.remove();
return false;
}else{
return true;
}
}
// 上传文件 这个地方需要注意的是,需要引入js(ajaxfileupload.js, 网上应该有,我就暂不提供了) 该js中定义了ajaxFileUpload方法 ,这里直接用
// 注: ajaxfileupload.js 版本没有定义返回json数据的获取(即返回的数据包含了标签,直接拿不到)
// 因此我修改了下,新增了一个类型,可以获取Json的数据 如下:
// 200行的地方新增了:------------
if ( type == "tojson" ){
//eval("data = \" "+data+" \" ");
data = jQuery.parseJSON(jQuery(data).text());
}
// ------------
function uploadFile(){
if (!validateFile("uploadFile")){
return ;
}
var timestamp = {time:new Date().getTime()};
var obj = document.getElementById("uploadFile");
var name = obj.files[0].name;
// ajaxfileupload.js 新增 type = "tojson" 特殊逻辑 接收 json串
$.ajaxFileUpload({
url:'xxx',
type:'post',
data: timestamp,
async:false,
secureuri: false, //是否需要安全协议,一般设置为false
fileElementId: 'uploadFile', //文件上传域的ID
dataType:'tojson',// json 获取不到json的数据,新增的tojson的类型
success: function (data){ //服务器成功响应处理函数
// 根据返回的data,进行其他操作
resetUploadFile(); // 清除缓存,防止第二次上传失效
...
}
},
error: function (data, status, e)//服务器响应失败处理函数
{
$.messager.alert("warning","上传失败:"+e);
return false;
}
});
}
// 清除缓存
function resetUploadFile(){
var file = $("#uploadFile");
file.after(file.clone().val(""));
file.remove();
// 需要重新加载一次,去掉好像会有滴问题,暂没查清原因。哪位大神指点下
$("#uploadFile").change(function(){
uploadFile();
});
}
DataGrid 的部分用法
1、刷新指定一行数据,如: $('#dataGridId').datagrid('refreshRow', index);
2、鼠标指定某一列(单元格)触发事件 如:onClickCell:function(rowIndex, field, value){}
3、合并单元格 如:
onLoadSuccess:function (data){
var mark_field=1;
for (var i=1; i
$("#dataGridId").datagrid('doCellTip',{'max-width':'1000px','delay':300});
5、dataGrid动态新增行,并且编辑该行
// 新增行
$("#add_button").click(function(){
if (editRow != undefined) {
$("#dataGridId").datagrid('endEdit', editRow);
}
if (editRow == undefined) {
$("#dataGridId").datagrid('insertRow', {
// index: 0,
row: {}
});
}
// 添加其他处理逻辑 如:按钮的显示,隐藏等
$("#button1").show();
$("#button2").hide();
});
// 编辑该行
$("#edit_button").click(function(){
var row = $("#dataGridId").datagrid('getSelected');
if(!row){
$.messager.alert("操作提示","请选择","warning");
}else {
var index = $('#dataGridId').datagrid('getRowIndex',row);//获取行号
editRow = index;
updateRow = index;
$('#dataGridId').datagrid('selectRow', editRow).datagrid('beginEdit', editRow);
}
// 添加其他处理逻辑 如:按钮的显示,隐藏等
$("#button1").show();
$("#button2").hide();
});
6、dataGrid动态的加载列
// 动态加载Url
$('#dataGridId').datagrid('options').url=url;
// 加载数据
$("#dataGridId").datagrid("load",pams);
// 动态加载固定列,以及动态列
$("#dataGridId").datagrid({frozenColumns:frozensColumns,columns:deatilColumns});
如有描述有误的地方,请各位大神指点.. 抱拳