- 浏览: 172675 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
tangyuanjian:
这个request怎么赋值啊!
rails技巧之得到web应用中的web服务器地址和端口号 -
wangbaocai:
asp.net导出邮箱联系人列表,支持QQ邮箱、163邮箱、G ...
rails 导出邮箱联系人 -
andrew.yulong:
他默认有个guest角色啊
rails 权限控制 -
liucuan:
如果想过滤这个插件怎么过滤,比如我的index页面我想登录不登 ...
rails 权限控制 -
ayaga:
pt.afterTextEl.el.innerHTML = S ...
extJS控件之每页显示N条记录
和大家分享一个我在www.extjs.com上找的插件,该插件可以执行客户端查询,说白了就是只能在本页做查询动作,没有和服务器交互.代码如下
// vim: ts=4:sw=4:nu:fdc=4:nospell /** * Search plugin for Ext.grid.GridPanel, Ext.grid.EditorGrid ver. 2.x or subclasses of them * * @author Ing. Jozef Sakalos * @copyright (c) 2008, by Ing. Jozef Sakalos * @date 17. January 2008 * @version $Id: Ext.ux.grid.Search.js 120 2008-03-31 00:09:05Z jozo $ * * @license Ext.ux.grid.Search is licensed under the terms of * the Open Source LGPL 3.0 license. Commercial use is permitted to the extent * that the code/component(s) do NOT become part of another Open Source or Commercially * licensed development library or toolkit without explicit permission. * * License details: http://www.gnu.org/licenses/lgpl.html */ /*global Ext */ Ext.ns('Ext.ux.grid'); /** * @class Ext.ux.grid.Search * @extends Ext.util.Observable * @param {Object} config configuration object * @constructor */ Ext.ux.grid.Search = function(config) { Ext.apply(this, config); Ext.ux.grid.Search.superclass.constructor.call(this); }; // eo constructor Ext.extend(Ext.ux.grid.Search, Ext.util.Observable, { /** * @cfg {String} searchText Text to display on menu button */ searchText:'Search' /** * @cfg {String} searchTipText Text to display as input tooltip. Set to '' for no tooltip */ ,searchTipText:'Type a text to search and press Enter' /** * @cfg {String} selectAllText Text to display on menu item that selects all fields */ ,selectAllText:'Select All' /** * @cfg {String} position Where to display the search controls. Valid values are top and bottom (defaults to bottom) * Corresponding toolbar has to exist at least with mimimum configuration tbar:[] for position:top or bbar:[] * for position bottom. Plugin does NOT create any toolbar. */ ,position:'bottom' /** * @cfg {String} iconCls Icon class for menu button (defaults to icon-magnifier) */ ,iconCls:'icon-magnifier' /** * @cfg {String/Array} checkIndexes Which indexes to check by default. Can be either 'all' for all indexes * or array of dataIndex names, e.g. ['persFirstName', 'persLastName'] */ ,checkIndexes:'all' /** * @cfg {Array} disableIndexes Array of index names to disable (not show in the menu), e.g. ['persTitle', 'persTitle2'] */ ,disableIndexes:[] /** * @cfg {String} dateFormat how to format date values. If undefined (the default) * date is formatted as configured in colummn model */ ,dateFormat:undefined /** * @cfg {Boolean} showSelectAll Select All item is shown in menu if true (defaults to true) */ ,showSelectAll:true /** * @cfg {String} mode Use 'remote' for remote stores or 'local' for local stores. If mode is local * no data requests are sent to server the grid's store is filtered instead (defaults to 'remote') */ ,mode:'remote' /** * @cfg {Number} width Width of input field in pixels (defaults to 100) */ ,width:100 /** * @cfg {String} xtype xtype is usually not used to instantiate this plugin but you have a chance to identify it */ ,xtype:'gridsearch' /** * @cfg {Object} paramNames Params name map (defaults to {fields:'fields', query:'query'} */ ,paramNames: { fields:'fields' ,query:'query' } /** * @cfg {String} shortcutKey Key to fucus the input field (defaults to r = Sea_r_ch). Empty string disables shortcut */ ,shortcutKey:'r' /** * @cfg {String} shortcutModifier Modifier for shortcutKey. Valid values: alt, ctrl, shift (defaults to alt) */ ,shortcutModifier:'alt' /** * @cfg {String} align 'left' or 'right' (defaults to 'left') */ /** * @cfg {Number} minLength force user to type this many character before he can make a search */ /** * @cfg {Ext.Panel/String} toolbarContainer Panel (or id of the panel) which contains toolbar we want to render * search controls to (defaults to this.grid, the grid this plugin is plugged-in into) */ // {{{ /** * private * @param {Ext.grid.GridPanel/Ext.grid.EditorGrid} grid reference to grid this plugin is used for */ ,init:function(grid) { this.grid = grid; // setup toolbar container if id was given if('string' === typeof this.toolbarContainer) { this.toolbarContainer = Ext.getCmp(this.toolbarContainer); } // do our processing after grid render and reconfigure grid.onRender = grid.onRender.createSequence(this.onRender, this); grid.reconfigure = grid.reconfigure.createSequence(this.reconfigure, this); } // eo function init // }}} // {{{ /** * private add plugin controls to <b>existing</b> toolbar and calls reconfigure */ ,onRender:function() { var panel = this.toolbarContainer || this.grid; var tb = 'bottom' === this.position ? panel.bottomToolbar : panel.topToolbar; // add menu this.menu = new Ext.menu.Menu(); // handle position if('right' === this.align) { tb.addFill(); } else { tb.addSeparator(); } // add menu button tb.add({ text:this.searchText ,menu:this.menu ,iconCls:this.iconCls }); // add input field (TwinTriggerField in fact) this.field = new Ext.form.TwinTriggerField({ width:this.width ,selectOnFocus:undefined === this.selectOnFocus ? true : this.selectOnFocus ,trigger1Class:'x-form-clear-trigger' ,trigger2Class:'x-form-search-trigger' ,onTrigger1Click:this.onTriggerClear.createDelegate(this) ,onTrigger2Click:this.onTriggerSearch.createDelegate(this) ,minLength:this.minLength }); // install event handlers on input field this.field.on('render', function() { this.field.el.dom.qtip = this.searchTipText; // install key map var map = new Ext.KeyMap(this.field.el, [{ key:Ext.EventObject.ENTER ,scope:this ,fn:this.onTriggerSearch },{ key:Ext.EventObject.ESC ,scope:this ,fn:this.onTriggerClear }]); map.stopEvent = true; }, this, {single:true}); tb.add(this.field); // reconfigure this.reconfigure(); // keyMap if(this.shortcutKey && this.shortcutModifier) { var shortcutEl = this.grid.getEl(); var shortcutCfg = [{ key:this.shortcutKey ,scope:this ,stopEvent:true ,fn:function() { this.field.focus(); } }]; shortcutCfg[0][this.shortcutModifier] = true; this.keymap = new Ext.KeyMap(shortcutEl, shortcutCfg); } } // eo function onRender // }}} // {{{ /** * private Clear Trigger click handler */ ,onTriggerClear:function() { this.field.setValue(''); this.field.focus(); this.onTriggerSearch(); } // eo function onTriggerClear // }}} // {{{ /** * private Search Trigger click handler (executes the search, local or remote) */ ,onTriggerSearch:function() { if(!this.field.isValid()) { return; } var val = this.field.getValue(); var store = this.grid.store; // grid's store filter if('local' === this.mode) { store.clearFilter(); if(val) { store.filterBy(function(r) { var retval = false; this.menu.items.each(function(item) { if(!item.checked || retval) { return; } var rv = r.get(item.dataIndex); rv = rv instanceof Date ? rv.format(this.dateFormat || r.fields.get(item.dataIndex).dateFormat) : rv; var re = new RegExp(val, 'gi'); retval = re.test(rv); }, this); if(retval) { return true; } return retval; }, this); } else { } } // ask server to filter records else { // clear start (necessary if we have paging) if(store.lastOptions && store.lastOptions.params) { store.lastOptions.params[store.paramNames.start] = 0; } // get fields to search array var fields = []; this.menu.items.each(function(item) { if(item.checked) { fields.push(item.dataIndex); } }); // add fields and query to baseParams of store delete(store.baseParams[this.paramNames.fields]); delete(store.baseParams[this.paramNames.query]); if (store.lastOptions && store.lastOptions.params) { delete(store.lastOptions.params[this.paramNames.fields]); delete(store.lastOptions.params[this.paramNames.query]); } if(fields.length) { store.baseParams[this.paramNames.fields] = Ext.encode(fields); store.baseParams[this.paramNames.query] = val; } // reload store store.reload(); } } // eo function onTriggerSearch // }}} // {{{ /** * @param {Boolean} true to disable search (TwinTriggerField), false to enable */ ,setDisabled:function() { this.field.setDisabled.apply(this.field, arguments); } // eo function setDisabled // }}} // {{{ /** * Enable search (TwinTriggerField) */ ,enable:function() { this.setDisabled(false); } // eo function enable // }}} // {{{ /** * Enable search (TwinTriggerField) */ ,disable:function() { this.setDisabled(true); } // eo function disable // }}} // {{{ /** * private (re)configures the plugin, creates menu items from column model */ ,reconfigure:function() { // {{{ // remove old items var menu = this.menu; menu.removeAll(); // add Select All item plus separator if(this.showSelectAll) { menu.add(new Ext.menu.CheckItem({ text:this.selectAllText ,checked:!(this.checkIndexes instanceof Array) ,hideOnClick:false ,handler:function(item) { var checked = ! item.checked; item.parentMenu.items.each(function(i) { if(item !== i && i.setChecked) { i.setChecked(checked); } }); } }),'-'); } // }}} // {{{ // add new items var cm = this.grid.colModel; Ext.each(cm.config, function(config) { var disable = false; if(config.header && config.dataIndex) { Ext.each(this.disableIndexes, function(item) { disable = disable ? disable : item === config.dataIndex; }); if(!disable) { menu.add(new Ext.menu.CheckItem({ text:config.header ,hideOnClick:false ,checked:'all' === this.checkIndexes ,dataIndex:config.dataIndex })); } } }, this); // }}} // {{{ // check items if(this.checkIndexes instanceof Array) { Ext.each(this.checkIndexes, function(di) { var item = menu.items.find(function(itm) { return itm.dataIndex === di; }); if(item) { item.setChecked(true, true); } }, this); } // }}} } // eo function reconfigure // }}} }); // eo extend // eof
例子:
var grid = new Ext.grid.GridPanel({ store: store, cm: cm, sm: sm, collapsible : true,// 是否可以展开 animCollapse : false,// 展开时是否有动画效果 renderTo: 'editor-grid', width: 800, height: 600, bbar: new Ext.PagingToolbar({ pageSize: 15, store: store, displayInfo: true, displayMsg: "显示第 {0} 条到 {1} 条记录,一共 {2} 条", emptyMsg: "没有记录" }), plugins:[new Ext.ux.grid.Search({ mode:'local' ,iconCls:false ,dateFormat:'m/d/Y' , minLength:2 // ,align:'right' })] });
发表评论
-
combtree
2008-09-02 13:56 1554想打开一个下拉框,里面是一个树吗? 嘿嘿,就像这样. ... -
extJs和javaEE
2008-07-25 13:48 1576一直想写个extjs和javaee具体怎么集成的例子.但是 ... -
extJs之下拉框联动
2008-07-24 13:03 4007在ext的世界里面,我重新感受到了在学校里玩swing的记忆. ... -
扩展GridPanel
2008-07-01 13:32 1650ext的强大是可以看见的,这里我在网上找了一个经过扩展的g ... -
ExtJs控制之更换皮肤
2008-07-04 17:13 5245今天和大家分享一个更换皮肤的控件,但是狠是失望,因为ext ... -
extJS控件之每页显示N条记录
2008-07-04 17:22 5121这是一个分页的控件,可以选择每页显示N条记录,就是在分页工 ... -
extJs之简易上传控件
2008-07-04 17:53 5717ext的官方网站有许多大侠写了许多狠牛的上传控件,但是功能 ... -
ext2.0 JsonReader惊天大问题!
2008-06-19 15:29 1320我有两个combo,为两个combo分别绑定两个数据源! 代码 ... -
ext2.0 json问题
2008-06-10 13:47 1143inquiry = inquiryService.lo ... -
ext2.0 实现innerHTML
2008-06-10 09:40 2154最近在搞ext2.0,为了它的效果,一切困难都是值得的。嘿 ...
相关推荐
ExtJS是一种基于JavaScript的富客户端应用框架,专用于构建交互式和数据驱动的Web应用程序。在"extjs网页控件开发"中,我们主要关注的是使用ExtJS来创建高效的网页组件,如图表和多级联动下拉列表框。这些控件能够...
5. **表单处理**:ExtJS的表单组件功能强大,支持各种输入控件、验证和数据提交。表单可以与数据存储结合,实现动态的数据绑定和验证。 6. **图表和图形**:通过ExtJS的Charts模块,开发者可以创建各种数据可视化...
在ASP.NET 3.5框架下,ExtJS控件能帮助开发出具有桌面应用般体验的网页应用。 在标题"Extjs UI控件 for Asp.net3.5"中,我们关注的是ExtJS这个UI库如何应用于ASP.NET 3.5的项目中。ExtJS提供了多种可复用的组件,如...
EXTJS是一款基于JavaScript的富客户端应用框架,它提供了一系列丰富的组件,用于构建功能强大的Web应用程序。在EXTJS中,时间控件是常见的交互元素,允许用户选择特定的时间,包括年、月、日、时、分和秒。这篇文档...
这个文件可能是对一些自定义或第三方开发的ExtJs控件的概述,它可能包括了各种特定用途的组件,如日历控件、拖放功能、树形视图、图表插件等。这些控件通常是为了满足特定项目需求或者优化原有组件性能而创建的。...
ExtJS 是一个强大的JavaScript 库,专用于构建富客户端应用程序。在ExtJS中,微调控件(Spinner)是一种用户界面组件,它允许用户通过点击向上或向下的箭头以微小增量增加或减少数值,常见于输入框旁边,提供一种...
5. **事件处理**:ExtJS控件通常支持多种事件,如`select`事件(当用户选择一个日期或时间时触发),开发者可以绑定回调函数来响应这些事件,进行进一步的数据处理或验证。 6. **本地化**:对于国际化的应用,日期...
ExtJS是一种广泛使用的JavaScript库,专门用于构建富客户端的Web应用程序。它提供了丰富的用户界面组件,包括各种各样的控件,如时间控件和IP输入控件,这些在Web开发中非常实用。在这个名为"ExtJS时间控件、IP输入...
"很经典的"意味着这些示例在当时可能是非常流行和实用的,对于学习和掌握ExtJS控件的用法有很高的参考价值。作者提到"希望对需要的朋友有帮助",显示出分享精神,尽管他可能积分不足,无法提供更多的支持。 【标签...
在ExtJs中,"通用筛选查询控件"是一个常见且实用的功能,它允许用户在数据网格中进行多维度的筛选和查询,以快速定位到所需的数据。下面我们将详细探讨这个主题。 1. **筛选查询控件的基本概念** 筛选查询控件是...
ExtJS是一个强大的JavaScript框架,主要用于构建富客户端应用。在ExtJS中,搜索控件和插件是提升用户体验、实现高效数据查找的关键元素。本篇将深入探讨这些知识点,以帮助你更好地理解和应用。 首先,我们要了解`...
EXTJS是一种广泛应用于Web开发的JavaScript库,特别适合构建富客户端应用。在EXTJS中,时间控件(Date Picker)是常见的元素,用于选择日期或时间。然而,有时开发人员可能需要对这些控件进行自定义,以满足特定业务...
ExtJS是一款基于JavaScript的富客户端应用开发框架,它提供了丰富的组件库,用于构建复杂的Web应用程序。在3.2和3.3版本中,ExtJS的时间控件(DateTimeField)和日期控件(DateField)是开发者常用的功能组件,用于...
ExtJS 是一个强大的JavaScript 应用程序框架,用于构建富客户端Web应用。在ExtJS 5中,日期时间控件是开发用户界面时经常会用到的组件,它允许用户选择和输入日期及时间值。本篇文章将深入探讨ExtJS 5的日期时间控件...
ExtJS 是一个强大的JavaScript库,专门用于构建富客户端应用程序。在ExtJS中,时间控件是一种用户界面元素,允许用户选择或输入特定的时间值。它提供了丰富的交互性和自定义选项,使得时间选择过程更加直观和高效。...
ExtJS 是一个强大的JavaScript 框架,专用于构建富客户端Web应用程序。它提供了一整套组件化的用户界面元素和丰富的交互功能。在ExtJS中,多文件上传控件是开发人员常用的一种功能,用于在网页上实现批量上传多个...
ExtJs 是一个强大的JavaScript库,专门用于构建富客户端的Web应用程序。它提供了丰富的组件库,包括数据网格(DataGridView)控件,这个控件在Web应用中广泛用于展示和操作大量结构化数据。在"ExtJs DataGridView...
ExtJS是一个强大的JavaScript框架,主要用于构建富客户端应用。在3.0版本中,它提供了丰富的UI组件,包括日期时间控件。这个控件是开发人员在网页应用中处理日期和时间输入的重要工具,尤其适用于需要用户输入特定...
在ExtJS中,下拉列表树控件(ComboBox Tree)是常见的组件之一,它结合了下拉列表和树结构,提供了更丰富的用户界面。这个控件允许用户从一个层级化的数据结构中进行选择,非常适合于展示有层次关系的数据。 在创建...
ExtJS是一个强大的JavaScript框架,主要用于构建富客户端应用。在ExtJS 4.2版本中,开发者可以使用DateTime控件来处理日期和时间的选择与显示,这尤其适用于需要精确到时分秒的场景。这个控件是ExtJS对基础日期选择...