`
babydeed
  • 浏览: 238780 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Extjs 下拉grid

    博客分类:
  • Ext
阅读更多

Extjs 下拉grid

 

Ext.ns("Ext.plugins.GridCombox");
Ext.plugins.GridCombox = function(a) {
 this.config = Ext.apply({
    width : 320,
    height : 350
   }, a);
};
Ext.extend(Ext.plugins.GridCombox, Ext.util.Observable, {
 init : function(b) {
  Ext.apply(b, {
   initList : b.initList.createInterceptor((function(d) {
      return function() {
       if(!this.list){
        var cls = 'x-combo-list';
                 this.list = new Ext.Layer({shadow:this.shadow, constrain:true, shim:true});
                 var lw = this.listWidth || Math.max(this.wrap.getWidth(), this.minListWidth);
                 this.list.setWidth(lw);
                 this.list.swallowEvent('mousewheel');
                 this.assetHeight = 0;
                 
                 if(this.title){
                     this.header = this.list.createChild({cls:cls+'-hd', html: this.title});
                     this.assetHeight += this.header.getHeight();
                 }
                 
                 this.innerList = this.list.createChild({cls:cls+'-inner'});
                 this.innerList.setWidth(lw - this.list.getFrameWidth('lr'));
                  
                  this.grid = new Ext.grid.GridPanel({
         border:true,
            collapsible: false, 
            loadMask: true ,
            autoScroll:true,
         width : this.listWidth || Math.max(this.wrap.getWidth(), this.minListWidth),
         height : 250,
         store : b.store,
         cm : b.cm,
         sm: new Ext.grid.RowSelectionModel({singleSelect:true}),  
         bbar:new Ext.PagingToolbar({
                   id:'PagingToolbar',
                   pageSize: b.pageSize || 20,
                   store:b.store,
                   displayInfo: false
               })
        });
        this.grid.render(this.innerList);
        this.innerList.appendChild(this.grid.getEl());
        
        this.grid.on("rowclick", function (g, rowIndex, e) {
         var record = b.store.getAt(rowIndex);
         this.onSelect(record, rowIndex);
         this.collapse();
         if (!b.trigger) {
          this.focus();
         }
        }, this);
       }
       return false;
      }
     })(this.config), b),
   onRender : b.onRender.createSequence(function() {
      if (!this.lazyInit) {
       this.initList();
      } else {
       this.on("focus", this.initList, this, {
          single : true
         });
      }
     }, b),
   onTriggerClick : b.onTriggerClick.createInterceptor((function(d) {
      return function() {
       if (!this.disabled) {
        if (this.isExpanded()) {
         this.collapse();
         this.el.focus();
        } else {
         this.onFocus({});
         this.expand();
         this.store.load();//点击时 grid的store加载数据
        }
       }
       return false;
      };
     })(this.config), b),
   expand : b.expand.createInterceptor((function(d) {
      return function() {
       if (this.isExpanded()) {
        return;
       }
       
       this.list.alignTo(this.wrap, this.listAlign);
       this.list.show();
       if (Ext.isGecko2) {
        this.innerList.setOverflow('auto'); // necessary
       }
       Ext.getDoc().on('mousewheel', this.collapseIf, this);
       Ext.getDoc().on('mousedown', this.collapseIf, this);
       this.fireEvent('expand', this);
      };
     })(this.config), b)
  });
 }
});

 

使用例子:

 var cm = new Ext.grid.ColumnModel([
  {header:'编号',dataIndex:'id',menuDisabled:true},
  {header:'性别',dataIndex:'name',menuDisabled:true},
  {header:'名称',dataIndex:'descn',menuDisabled:true},
  {header:'描述',dataIndex:'date',menuDisabled:true}
 ]);
    var store = new Ext.data.Store({
        proxy: new Ext.data.HttpProxy({url:'js/8.jsp'}),
        reader: new Ext.data.JsonReader({
            totalProperty: 'totalCount',
            root: 'items',
            id:id
        }, [
          {name: 'id', type: 'int'},
          {name: 'name', type: 'string'},
          {name: 'descn', type: 'string'},
          {name: 'date', type: 'string'}
        ]),
        baseParams:{
         start:0,limit:10
        }
    }); 
        
      var c = new Ext.form.ComboBox({
    typeAhead : true,
    fieldLabel : '名称',
    hiddenName : 'id',
    triggerAction : 'all',
    lazyRender : true,
    width:300,
    displayField:'name',
    valueField:'id',
    store:store,
    mode : 'local',
    listClass : 'x-combo-list-small',
    selectedClass:'', 
    allowBlank : false,
    emptyText:'请选择...',
    cm:cm,
    onSelect:function(record,rowIndex){
     c.setValue(record.get("id"));
     c.setRawValue(record.get("name"));
    },
    plugins : [new Ext.plugins.GridCombox()]
   });

 

 

	 其中8.jsp内容
<%
String start = request.getParameter("start");
String limit = request.getParameter("limit");
try {
    int index = Integer.parseInt(start);
    int pageSize = Integer.parseInt(limit);

    String json = "{totalCount:100,items:[";

        for (int i = index; i < pageSize + index; i++) {
            json += "{id:" + i + ",name:'name" + i + "',descn:'descn" + i + "',date:'2010-01-01'}";
            if (i != pageSize + index - 1) {
                json += ",";
            }
        }
    json += "]}";
    response.getWriter().write(json);
    System.out.println(json);
} catch(Exception ex) {
}
%>

 

 

 

 

  • 大小: 4.8 KB
  • 大小: 28.3 KB
分享到:
评论
2 楼 love_wting 2015-04-27  
为什么下拉框的表格样式显示了,数据访问json也从数据库中取到了,但是json数据并没有渲染到下拉表格。为什么表格没有数据呢
1 楼 qhdpeter 2012-09-06  
怎么第一次点上去的时候,下拉框没有展开,一定要点右边的下拉按钮。。

相关推荐

    Extjs4下拉菜单ComboBox中用Grid显示通用控件

    3. **使用 Grid 作为下拉菜单** - 当 `ComboBox` 的下拉列表需要展示复杂数据结构时,如多列或带有自定义样式的数据,可以使用 `GridComboBox`。 - `GridComboBox` 可以设置为单选或多选模式,根据业务需求选择...

    ExtJS grid过滤操作

    ExtJS Grid是一个强大的数据展示组件,它允许用户以表格的形式查看和操作大量数据。在实际应用中,数据过滤是常见的需求,以便用户能快速定位到感兴趣的信息。本篇将深入探讨ExtJS Grid的过滤操作,以及如何动态地对...

    ExtJS下拉列表树控件

    总结起来,ExtJS下拉列表树控件的应用涉及到多个知识点,包括但不限于数据源的构建、ComboBox Tree的配置、GridPanel的编辑功能、事件监听及处理,以及在具体场景中的问题解决。通过理解这些概念并实践,可以创建出...

    Extjs6 下拉列表

    综上所述,ExtJS6的下拉列表(ComboBox)和GridCombo扩展控件提供了强大的功能和灵活性,它们可以用于创建丰富的用户界面,满足各种复杂的业务需求。理解和熟练掌握这些组件的使用,对于开发高质量的Web应用至关重要...

    extjs4 ComboBox 点击下拉框 出现grid效果

    在EXTJS4中,ComboBox是一个常用的组件,它用于创建下拉选择框,通常用于输入框的辅助选择。这个组件提供了一种用户友好的方式来从一组预定义的选项中进行选择。然而,根据你的标题和描述,你似乎遇到了一个特别的...

    Extjs 下拉菜单实现拼音输入进行检索

    Extjs 下拉菜单实现拼音输入进行检索

    Extjs动态GRID

    EXTJS动态GRID是一种基于JavaScript的前端开发框架EXTJS中的组件,用于展示数据并提供交互功能。EXTDRID(可能是EXTGRID的拼写错误)是指EXTJS中的Grid Panel,它允许开发者构建灵活、可配置的数据视图,适用于大量...

    EXTJS2.2.1中Grid表头的下拉菜单很难看

    在EXTJS 2.2.1版本中,用户可能会发现Grid表头的下拉菜单在视觉呈现上不尽如人意,这可能是由于默认样式或自定义样式配置不当导致的。 EXTJS的Grid组件允许用户对列进行排序、分组、过滤等操作,而表头的下拉菜单...

    extjs grid示例代码

    ExtJS Grid是Sencha ExtJS框架中的一个核心组件,它用于构建数据驱动的表格视图。Grid组件在Web应用中广泛使用,因为它提供了强大的数据展示、排序、分页、筛选和编辑功能。以下是对`ExtJS Grid`示例代码的详细解析...

    解决ext下拉列表全选和去全选功能

    总结起来,EXTJS下拉列表的全选和去全选功能主要涉及对数据存储的操作,以及绑定这些操作到用户界面的元素上。通过理解和利用EXTJS提供的API,我们可以轻松地实现这一功能。在实际开发中,记得根据具体需求进行适当...

    ExtJS PropertyGrid中使用Combobox选择值问题

    在ExtJS中,PropertyGrid是一种用于展示对象属性的控件,它可以方便地编辑和查看对象的各个属性。在PropertyGrid中遇到的一个常见问题是当使用Combobox(下拉列表框)作为编辑器时,用户选择的值(displayField)与...

    ExtJs Filter 表格过滤

    在ExtJs中,"Filter"功能是用来处理数据网格(Grid)中的数据过滤,它允许用户根据特定条件快速筛选和查找所需信息。表格过滤是提高用户体验和数据管理效率的重要工具,尤其在处理大量数据时。 在"ExtJs Filter ...

    实现extjs4 的树、grid、form、query等大部分组件的功能

    接着,网格(Grid)组件是EXTJS的核心组件之一,用于展示大量数据并支持排序、分页、过滤等功能。EXTJS4中的网格可以配合各种插件,如行编辑、列拖动、导出Excel等,以满足不同需求。数据与网格通过store进行绑定,...

    ExtJS Filter 实现表格过滤

    在ExtJS中,Grid组件是用于展示大量数据的表格视图,它提供了丰富的功能和交互性。"Filter"功能是Grid的一个重要特性,允许用户对表格数据进行实时筛选,提高数据的查看和管理效率。 ### 表格过滤(Grid Filter) ...

    extjs中grid中嵌入动态combobox的应用

    在EXTJS中,将动态Combobox嵌入到Grid中是一种常见的需求,这允许用户在单元格内选择一个下拉列表的值,同时保持数据的关联性。以下是对标题和描述中涉及的知识点的详细说明: 1. **Ext.data.JsonStore**: 这是...

    自定义ExtJS控件之下拉树和下拉表格附

    在这个方法中,我们创建了一个网格面板(Ext.grid.Panel)来展示下拉的内容。这个网格面板具有标题栏(title),框架(frame),可调整大小(resizable)等属性。通过配置列(columns),每一列显示不同的数据,例如...

    这是有关extjs的例子,里面有各种表单的定义,grid的实现

    在这个有关ExtJS的例子中,我们主要关注的是表单(Forms)的定义和Grid的实现。 表单在任何应用程序中都扮演着至关重要的角色,它们用于收集用户输入并将其发送到服务器进行处理。在ExtJS中,表单通常由各种字段...

    ExtJS4中文教程2 开发笔记 chm

    ExtJS4学习笔记(九)---ExtJS4 EditGrid(可编辑的Grid) ExtJS4学习笔记(二)---HBox的使用 ExtJS4学习笔记(五)---Grid分页 ExtJS4学习笔记(八)---Grid多选 全选 ExtJS4学习笔记(六)---多表头Grid ExtJS4学习笔记(十)--...

    extjs4 入门基础,form、grid、tree

    在ExtJS中,`Ext.grid.Panel`是创建网格的主要组件。你可以通过`columns`配置定义列,每列由一个对象表示,包含`text`(列标题)、`dataIndex`(对应数据源的字段名)和`width`(宽度)等属性。`store`配置项用于...

Global site tag (gtag.js) - Google Analytics