`
happy100583
  • 浏览: 124184 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

ExtJS 常见问题

阅读更多

grid的常见问题:

1,   grid数据为空.
2,   grid不能正确的显示图片
3,   不能正确排序
4,   TabPanels包括grid
5,   grid单元格中的link
6,   合并字段
7,   自定义row或者column的外观,行为
8,   grid cell添加click事件
9,   store调用load后, Store还是空
10, grid大小随window变化
11, 更新grid单元格(实际上是:store)
12, 从不同的url重新加载grid
13, xml问题
14, 当它应该为空的时候,grid保留记录
15, json Reader的调试
16, 拖动,或者重新加载一条记录
17, 水平滚动条
18, 固定或不固定列宽
19, 隐藏某列
20, grid列固定宽度包装单元格中内容
21, 添加一列
22, toolbar中元素居中
23, 删除选中行
24, 分页,总记录数
25, 通过grid行索引(row index)获取record
26, grid从不同的server或者store, 加载数据
27, 列自动大小
28, 禁某行
29, contentEl,applyTo和renderTo之间的区别
30, 错误数据, red flag显示
31, Editor grid - ComboBox显示
32, 显示边框
33, 删除grid右边的滚动条
34, grid使用footer
35, grid复制单元格内容
36, grid中的comboBoxes
37, grid自定义样式



具体解决方案如下:

1. grid为空

grid不显示数据
Store不加载数据
grid为空
grid不执行
grid没有监听store
    问题引发的可能原因

    (1).是否定义grid的高度, height,autoHeight,或者layout:'fit'的容器 中的一种

Js代码
grid = new Ext.grid.EditorGridPanel{(  
         //其他configs  
         //不要忘记指定height  
         //三种选择,(1) 显示的指定height,(2)使autoHeight(3)把grid放入一个布局为:fit的容器  
         //autoHeight: true   // autoHeight重新定义高度来显示所有的记录  
         // -- 或者--  
         //height: 350  
)}

grid = new Ext.grid.EditorGridPanel{(
         //其他configs
         //不要忘记指定height
         //三种选择,(1) 显示的指定height,(2)使autoHeight(3)把grid放入一个布局为:fit的容器
         //autoHeight: true   // autoHeight重新定义高度来显示所有的记录
         // -- 或者--
         //height: 350
)}    (2).是否加载store? 调用方法store.load()

    (3). 是否render grid, Render a grid使用下面的一种:

在grid 配置中使用renderTo 或者 el 自动render
显示的调用render()方法, grid.render()
    (4). render的元素是否存在.

    (5). 如果把一个grid放入一个tab panel中, 尝试在tabPanel的配置中添加 layoutOnTabChange: true

    (6). 如果使用JSON,

JSON 的格式是否正确(可以在www.jslint.com验证你的JSON响应)
确保它不是一个string, (JSON = object)
不要在字段名中使用句点(.) ("filed.c" ext 不会转译)
确保JSON的结构和render的一致(记录数组处于根节点之下, 等等)
    (7).The render是否正确指定了一个正确的root, JSON中使用该root

检查下面的从JSONReader来的示例响应, 如果你设定一个root 来包装JSON 响应中的数组, 可能象下面:
Js代码
{ 'results': 2, 'rows': [{"CodigoProduto":"3009","TipoProduto":"FERT",  
"DescricaoProduto":"7 UP Reg. 12 GR 1,50 PET",  
"UnidadeMedidaProduto":"TAB","Sabor":"V-REGULAR",  
"CodigoMarca":"35","ProdutoPesoBruto":"19.448",  
"ProdutoPesoLiquido":"18.760","ProdutoPesoUM":"KG",  
"ProdutoVolume":"18.000","ProdutoVolumeUM":"L",  
"ProdutoUM_PAL":"36","Eliminar":""}]  
}  

{ 'results': 2, 'rows': [{"CodigoProduto":"3009","TipoProduto":"FERT",
"DescricaoProduto":"7 UP Reg. 12 GR 1,50 PET",
"UnidadeMedidaProduto":"TAB","Sabor":"V-REGULAR",
"CodigoMarca":"35","ProdutoPesoBruto":"19.448",
"ProdutoPesoLiquido":"18.760","ProdutoPesoUM":"KG",
"ProdutoVolume":"18.000","ProdutoVolumeUM":"L",
"ProdutoUM_PAL":"36","Eliminar":""}]
}     (8). 确保一条记录的数据是一个数组中的一条

Java代码
var SecurityItemRecord = Ext.data.Record.create([{name: 'type'}, {name: 'itemName'}]);//OK  
var SecurityItemRecord = Ext.data.Record.create({name: 'type'}, {name: 'itemName'});//NO GOOD

var SecurityItemRecord = Ext.data.Record.create([{name: 'type'}, {name: 'itemName'}]);//OK
var SecurityItemRecord = Ext.data.Record.create({name: 'type'}, {name: 'itemName'});//NO GOOD    尝试使用firebug进行下面操作

    (I)firebug是否有错误显示

    (II)请求是否发出(查看console)

    (III)该请求是否收到一个响应, 如果是, 把结果拷贝到www.jslint.com中验证格式,   该响应是否是你想要的结果, 检查总记录数, 数组的根目录, 等等

    store load? 添加监听器监测store是否被加载或者有异常( 如何添加监听器? )

       Store 'datachanged', 'load', 'loadexception',

       Proxy 'load' / 'loadexception'

       也可以添加ajax监听器



2. grid不能正常的显示图片(checkboxes, 等等)

    (1), Css文件连接是否正确

    (2), css引用是否正确, 检查相对路径.



3. 排序问题

    (1). 检查store配置(sortInfo和sort type)或者使用setDefaultSort();

Java代码
sortInfo:{field: 'fieldname', direction: 'ASC'}   
//或者调用:  
store.setDefaultSort('fieldname', 'ASC');  

sortInfo:{field: 'fieldname', direction: 'ASC'}
//或者调用:
store.setDefaultSort('fieldname', 'ASC');
    (2). 检查sort type 是否设定

    (3). 如果仅仅针对当前页面排序, 同时排列整个DB查询 remoteSort应该设置为: true(remoteSort默认为本地排序)

    (4). 列排序

          列数据

Html代码
//当前排序  
+-+-------+  
|1|First |  
|2|Last |  
|3|Second|  
+-+-------+  

//希望的排序  
+-+-------+  
|1|First |  
|3|Second|  
|2|Last |

//当前排序
+-+-------+
|1|First |
|2|Last |
|3|Second|
+-+-------+

//希望的排序
+-+-------+
|1|First |
|3|Second|
|2|Last |
    在record定义

Js代码
sortType: function(value)  
{  
   switch (value.toLowerCase())  
   {  
      case 'first': return 1;  
      case 'second': return 2;  
      default: return 3;  
   }  
}

sortType: function(value)
{
   switch (value.toLowerCase())
   {
      case 'first': return 1;
      case 'second': return 2;
      default: return 3;
   }
}


4. Tab Panels中的grid

    (1). 象其他Panel一样, 你可以直接添加一个GridPanle作为一个item.

    (2). 确保Grid Panel是一个Tab Panel

    (3). 在Tab Panel 中设置 layoutOnTabChange

Js代码
//grid对象  
var g = new Ext.grid.GridPanel(  
       title: 'I will be the tab label';  
)  

var tabs2 = new Ext.TabPanel({  
       renderTo: document.body,  
       activeTab: 0,  
       widht: '100%'
       height: 150,  
       frame: true,  
       defaults:{autoScroll: true},  
       items: [0]   //grid 对象  
})

//grid对象
var g = new Ext.grid.GridPanel(
       title: 'I will be the tab label';
)

var tabs2 = new Ext.TabPanel({
       renderTo: document.body,
       activeTab: 0,
       widht: '100%'
       height: 150,
       frame: true,
       defaults:{autoScroll: true},
       items: [0]   //grid 对象
})
    (4). 例子: http://examples.extjs.eu/?ex=gridintab



5. grid单元格中的链接

    (1). 自定义一个renderer, 或者

    (2). 使用Ext.grid.RowSelectionModel的rowselect事件, 如下:

Js代码
function handleRowSelect(selectionModel, rowIndex, selectedRecord){  
         //假定记录中存在url字段  
         var url = selectedRecord.get('url');  
         //如果你想打开另外一个窗口  
         window.open(url);  
}  

grid.getSelectionModel().on('rowselect',handleRowSelect);

function handleRowSelect(selectionModel, rowIndex, selectedRecord){
         //假定记录中存在url字段
         var url = selectedRecord.get('url');
         //如果你想打开另外一个窗口
         window.open(url);
}

grid.getSelectionModel().on('rowselect',handleRowSelect);

6. 合并字段为一列

    (1). 连接记录中的两个字段(或多个)

Js代码
var reader = new Ext.data.ArrayReader({},[  
       //合二为一  
       {name:'full_name',type:'string',mapping:'first_name+ " " + obj.last_name'},  
       {name: 'age'}  
]);  

var grid = new Ext.grid.GridPanel({  
       store: new Ext.data.Store({  
             render: reader,  
             data: Ext.grid.dummyData  
       }),  
       columns:[  
              {header: 'Full Name',dataIndex: 'full_name'},  
              {header: 'Age',dataIndex:'age'}  
       ]  
})

var reader = new Ext.data.ArrayReader({},[
       //合二为一
       {name:'full_name',type:'string',mapping:'first_name+ " " + obj.last_name'},
       {name: 'age'}
]);

var grid = new Ext.grid.GridPanel({
       store: new Ext.data.Store({
             render: reader,
             data: Ext.grid.dummyData
       }),
       columns:[
              {header: 'Full Name',dataIndex: 'full_name'},
              {header: 'Age',dataIndex:'age'}
       ]
})    (2). 可以创建任何你需要的字段.

分享到:
评论

相关推荐

    extjs常见问题及解决方法

    extjs常见问题http://www.jb51.net/list/list_217_1.htm

    ExtJS内存泄漏问题详解

    关于ExtJS内存泄漏问题,一直是ExtJS开发人员困扰的问题,这篇文档很好地解释了什么是内存泄漏,为什么会产生内存泄漏。能够帮助程序员使用ExtJS开发出更高效安全的代码。

    轻松搞定Extjs 带目录

    - 分页功能是处理大量数据时的常见需求,在Extjs中可以通过特定的组件如GridPanel实现分页。 #### 13. 表单组件 Extjs中的表单组件丰富,包括: - FormPanel类用于封装表单。 - 各种表单输入元素的配置和使用。 ...

    包含各种类型的extjs小图标,Extjs4小图标

    - "5000个extjs小图标"意味着这个压缩包包含大量的图标资源,覆盖了各种常见和特定的功能,开发者可以根据需要选择合适的图标,提高应用的美观度和易用性。 5. **自定义图标**: - ExtJS 4允许开发者自定义图标,...

    extjs 的权限问题 要求控制的对象是 菜单,按钮,URL

    在Extjs框架中,实现基于角色的权限控制是一个常见需求。Extjs主要用于构建富互联网应用(RIA),其组件化的UI构建方式与传统Web开发有较大差异。因此,对于权限的控制也要采用特定的策略来实现。上述文件内容主要...

    extjs4.2 desktop 拓展

    此外,描述中提到的“修正ExtJS 4.2的一些bug”,意味着开发者对原始库进行了优化,解决了可能影响性能或稳定性的已知问题。这可能涉及到事件处理、渲染机制、数据绑定等方面,以提高整体的健壮性和可靠性。 最后,...

    ExtJS 3.4 源码包

    - **代码实践**:通过查看和分析实例代码,开发者可以学习到最佳实践和常见问题的解决方法。 5. **开发与调试** - **调试工具**:利用浏览器的开发者工具,可以追踪ExtJS源码中的错误和性能瓶颈。 - **主题定制*...

    extjs icon小图标

    3. Font图标:另一种常见的方式是使用图标字体(Icon Fonts),如Font Awesome。这种方式将图标作为字体字符处理,允许通过改变字体大小和颜色来调整图标样式。 4. 图片集:图标也可能以PNG或JPEG等图像格式提供,...

    extjs 3.3正式版

    在压缩包中,“说明.htm”可能包含了关于EXTJS 3.3的安装指南、使用提示或者常见问题解答。“chinaz.com.txt”可能是EXTJS开发过程中的笔记、示例代码或者资源链接,而“ext-3.3.1”则是EXTJS 3.3的核心库文件,包含...

    EXTJS实例 EXTJS树,可以编辑的EXTJS,EXTJS3.0

    在EXTJS中,树形组件(Tree)是一种常见的数据展示形式,它能够以层级结构显示数据,广泛应用于目录浏览、组织架构展示等场景。EXTJS3.0是EXTJS的一个版本,虽然相对较旧,但仍然具有强大的功能和丰富的特性。 在...

    ExtJs4.0 表单提交Demo

    ExtJs 4.0 是一款强大的JavaScript框架,用于构建富客户端Web应用。它提供了一整套组件、布局和数据管理工具,使得开发者可以构建出功能丰富、交互性强的用户界面。在“ExtJs4.0 表单提交Demo”中,我们将深入探讨...

    extjs资料extjs资料extjs资料

    它们可能包含了最佳实践、常见问题解决方案以及复杂的组件使用示例,对提高开发效率非常有帮助。 4. **Ext+JS深入浅出**:这可能是一本深入探讨ExtJS的书籍,涵盖了高级主题,如性能优化、自定义组件开发和高级布局...

    extjs 学习心得笔记

    在探讨《ExtJS学习心得笔记》这一主题时,我们不仅会深入理解ExtJS框架的核心概念与实践技巧,还会从新手的角度出发,提炼出一系列有助于快速上手的学习策略,避免常见的学习陷阱,确保学习过程高效而有成效。...

    extjs 自动补全 模拟combobox

    这个功能在许多应用中都非常常见,例如搜索框、表单字段等。EXTJS并没有直接提供一个名为"自动补全"的组件,但它可以通过模拟Combobox组件来实现这一效果。Combobox是EXTJS中的一个下拉选择框,它可以显示一个下拉...

    EXTJS页面编辑器

    3. **模板库**:EXTJS编辑器通常包含多种预设的模板,这些模板覆盖了常见的界面布局和功能,你可以根据需求选择合适的模板进行修改,快速搭建起基本框架。 4. **代码编辑与优化**:除了图形化编辑,编辑器还提供了...

    ExtJs2相关书籍

    《Ext实用简明教程》可能是对ExtJS2的基础知识和常见用法的全面介绍,涵盖了如何使用ExtJS构建用户界面、处理数据、创建组件等内容。读者可以从中学习到如何快速上手ExtJS2,理解其核心概念和API,以及如何将这些...

    基于EXTJS 的在线EXCEL编辑器

    3. **格式支持**:支持设置单元格的字体、颜色、对齐方式、边框样式等Excel常见的格式设定,以满足多样化的需求。 4. **公式与函数**:具备类似Excel的公式和函数计算功能,允许用户在在线编辑器中执行复杂的数据...

    界面框架extjs学习笔记

    配置BLANK_IMAGE_URL是解决图像路径问题的一个常见步骤,例如: ```javascript Ext.BLANK_IMAGE_URL = "/images/s.gif"; ``` EXTJS的组建基于Component类,每个组件都有一个xtype属性来标识其类型。在使用EXTJS之前...

    ASP.NET 调用EXTJS

    ASP.NET调用EXTJS是一个常见的Web开发场景,它结合了微软的服务器端技术与EXTJS这个强大的客户端JavaScript框架。EXTJS以其丰富的用户界面组件、数据网格、图表以及强大的布局管理而闻名,而ASP.NET则提供了稳定的...

    Extjs 性能优化 High Performance ExtJs

    在 Extjs 中,页面操作主要包括查询、修改、添加和删除等常见操作。为了提高性能,需要对这些操作进行适当的优化,例如通过分页机制减少数据加载量,使用异步加载技术来提高响应速度等。 #### 九、提示信息的使用 ...

Global site tag (gtag.js) - Google Analytics