博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
easyui源码翻译1.32--ComboGrid(数据表格下拉框)
阅读量:5214 次
发布时间:2019-06-14

本文共 9357 字,大约阅读时间需要 31 分钟。

前言

扩展自$.fn.combo.defaults和$.fn.datagrid.defaults。使用$.fn.combogrid.defaults重写默认值对象。

数据表格下拉框结合了可编辑文本框控件和下拉数据表格面板控件,该控件允许用户快速查找和选择,并且该控件提供了键盘导航支持,对行进行筛选

源码

 

/** * jQuery EasyUI 1.3.2 *  *翻译:qq 1364386878 下拉表格 */(function ($) {    function create(jq) {        var options = $.data(jq, "combogrid").options;        var grid = $.data(jq, "combogrid").grid;        $(jq).addClass("combogrid-f");        $(jq).combo(options);        var panel = $(jq).combo("panel");        if (!grid) {            grid = $("
").appendTo(panel); $.data(jq, "combogrid").grid = grid; } // grid.datagrid($.extend({}, options, { border: false, fit: true, singleSelect: (!options.multiple), onLoadSuccess: function (_6) { var remainText = $.data(jq, "combogrid").remainText; var remainText = $(jq).combo("getValues"); _setValues(jq, remainText, remainText); options.onLoadSuccess.apply(jq, arguments); }, onClickRow: onClickRow, onSelect: function (rowIndex, rowData) { retrieveValues(); options.onSelect.call(this, rowIndex, rowData); }, onUnselect: function (rowIndex, rowData) { retrieveValues(); options.onUnselect.call(this, rowIndex, rowData); }, onSelectAll: function (rows) { retrieveValues(); options.onSelectAll.call(this, rows); }, onUnselectAll: function (rows) { if (options.multiple) { retrieveValues(); } options.onUnselectAll.call(this, rows); } })); function onClickRow(rowIndex, row) { $.data(jq, "combogrid").remainText = false; retrieveValues(); if (!options.multiple) { $(jq).combo("hidePanel"); } options.onClickRow.call(this, rowIndex, row); }; function retrieveValues() { var remainText = $.data(jq, "combogrid").remainText; var rows = grid.datagrid("getSelections"); var vv = [], ss = []; for (var i = 0; i < rows.length; i++) { vv.push(rows[i][options.idField]); ss.push(rows[i][options.textField]); } if (!options.multiple) { $(jq).combo("setValues", (vv.length ? vv : [""])); } else { $(jq).combo("setValues", vv); } if (!remainText) { $(jq).combo("setText", ss.join(options.separator)); } }; }; //选择行 function selectRow(jq, step) { var options = $.data(jq, "combogrid").options; var grid = $.data(jq, "combogrid").grid; var length = grid.datagrid("getRows").length; if (!length) { return; } $.data(jq, "combogrid").remainText = false; var index; var rows = grid.datagrid("getSelections"); if (rows.length) { index = grid.datagrid("getRowIndex", rows[rows.length - 1][options.idField]); index += step; if (index < 0) { index = 0; } if (index >= length) { index = length - 1; } } else { if (step > 0) { index = 0; } else { if (step < 0) { index = length - 1; } else { index = -1; } } } if (index >= 0) { grid.datagrid("clearSelections"); grid.datagrid("selectRow", index); } }; //设置值 function _setValues(jq, values, remainText) { var options = $.data(jq, "combogrid").options; var grid = $.data(jq, "combogrid").grid; var rows = grid.datagrid("getRows"); var ss = []; for (var i = 0; i < values.length; i++) { var index = grid.datagrid("getRowIndex", values[i]); if (index >= 0) { grid.datagrid("selectRow", index); ss.push(rows[index][options.textField]); } else { ss.push(values[i]); } } if ($(jq).combo("getValues").join(",") == values.join(",")) { return; } $(jq).combo("setValues", values); if (!remainText) { $(jq).combo("setText", ss.join(options.separator)); } }; //查询 function _query(jq, q) { var options = $.data(jq, "combogrid").options; var grid = $.data(jq, "combogrid").grid; $.data(jq, "combogrid").remainText = true; if (options.multiple && !q) { _setValues(jq, [], true); } else { _setValues(jq, [q], true); } if (options.mode == "remote") { grid.datagrid("clearSelections"); grid.datagrid("load", $.extend({}, options.queryParams, { q: q })); } else { if (!q) { return; } var rows = grid.datagrid("getRows"); for (var i = 0; i < rows.length; i++) { if (options.filter.call(jq, q, rows[i])) { grid.datagrid("clearSelections"); grid.datagrid("selectRow", i); return; } } } }; //实例化组件 $.fn.combogrid = function (target, parm) { if (typeof target == "string") { var method = $.fn.combogrid.methods[target]; if (method) { return method(this, parm); } else { return $.fn.combo.methods[target](this, parm); } } target = target || {}; return this.each(function () { var state = $.data(this, "combogrid"); if (state) { $.extend(state.options, target); } else { state = $.data(this, "combogrid", { options: $.extend({}, $.fn.combogrid.defaults, $.fn.combogrid.parseOptions(this), target) }); } create(this); }); }; //下拉表格默认方法 $.fn.combogrid.methods = { //返回属性对象 options: function (jq) { var options = $.data(jq[0], "combogrid").options; options.originalValue = jq.combo("options").originalValue; return options; }, //返回数据表格对象 grid: function (jq) { return $.data(jq[0], "combogrid").grid; }, //返回数据表格对象 setValues: function (jq, values) { return jq.each(function () { _setValues(this, values); }); }, //设置组件值 setValue: function (jq, value) { return jq.each(function () { _setValues(this, [value]); }); }, //设置组件值 clear: function (jq) { return jq.each(function () { $(this).combogrid("grid").datagrid("clearSelections"); $(this).combo("clear"); }); }, //重置 reset: function (jq) { return jq.each(function () { var options = $(this).combogrid("options"); if (options.multiple) { $(this).combogrid("setValues", options.originalValue); } else { $(this).combogrid("setValue", options.originalValue); } }); } }; //解析器 $.fn.combogrid.parseOptions = function (target) { var t = $(target); return $.extend({}, $.fn.combo.parseOptions(target), $.fn.datagrid.parseOptions(target), $.parser.parseOptions(target, ["idField", "textField", "mode"])); }; $.fn.combogrid.defaults = $.extend({}, $.fn.combo.defaults, $.fn.datagrid.defaults, { loadMsg: null,//在数据表格加载远程数据的时候显示消息 idField: null,//ID字段名称 textField: null,//ID字段名称 //定义在文本改变的时候如何读取数据网格数据。设置为'remote', //数据表格将从远程服务器加载数据。当设置为'remote'模式的时候,用户输入将会发送到名为'q'的http请求参数,向服务器检索新的数据。 mode: "local", keyHandler: { up: function () { selectRow(this, -1); }, down: function () { selectRow(this, 1); }, enter: function () { selectRow(this, 0); $(this).combo("hidePanel"); }, query: function (q) { _query(this, q); } }, //定义在'mode'设置为'local'的时候如何选择本地数据,返回true时则选择该行 filter: function (q, row) { var options = $(this).combogrid("options"); return row[options.textField].indexOf(q) == 0; } });})(jQuery);
View Code

 

示例代码

 

    
ComboGrid Actions - jQuery EasyUI Demo

ComboGrid Actions

Click the buttons below to perform actions.
View Code

 

插件效果

转载于:https://www.cnblogs.com/DemoLee/p/3495938.html

你可能感兴趣的文章
Spring Cloud Zuul 网关使用与 OAuth2.0 认证授权服务
查看>>
梳理 Opengl ES 3.0 (三)顶点坐标变换
查看>>
Office2010安装错误
查看>>
Selenium2+python自动化7-xpath定位
查看>>
算法导论笔记:02基本排序查找算法
查看>>
Redis源码解析:08对象
查看>>
AIDL--------应用之间的通信接口
查看>>
java的JVM机制
查看>>
[Python笔记]第六篇:文件处理
查看>>
阶段一:读几本经济学书
查看>>
C结构体struct 和 共用体union的使用测试
查看>>
Jquery 的ajax里边不能识别$(this)
查看>>
linux下安装python
查看>>
自 嘲
查看>>
篇一:MySQL中case when then
查看>>
全球前50大名站
查看>>
使用gradle建立java application
查看>>
.Net 转战 Android 4.4 日常笔记(5)--新软件Android Studio 0.5.8安装与配置及问题解决...
查看>>
16 两点注意事项
查看>>
Linux服务器配置tomcat步骤
查看>>