最近在使用带复选框grid组件的时候发现了一个奇怪的问题,第一次载入这个grid组件时就给这个grid组件初始化数据并选中其中的某一项,但始终无法选中,经单步调试发现,选中行的方法已被执行了,只是在所有的东西都执行完后,grid又刷新了一下,导致原先选中的项丢失。
代码如下:
Ext.onReady(function(){
var data = [
['table1','column1','remark1'],
['table2','column2','remark2']
];
var store = new Ext.data.Store({
proxy : new Ext.data.MemoryProxy(data),
reader : new Ext.data.ArrayReader({},[
{name : 'tableName'},
{name : 'columnName'},
{name : 'remark'}
])
});
var databindsm = new Ext.grid.CheckboxSelectionModel({handleMouseDown : Ext.emptyFn,singleSelect : true});
var cm = new Ext.grid.ColumnModel([
new Ext.grid.RowNumberer(),
databindsm,
{header : '表名',dataIndex : 'tableName',width : 145},
{header : '字段名',dataIndex : 'columnName',width : 145},
{header : '备注',dataIndex : 'remark',width : 145}
]);
var grid = new Ext.grid.GridPanel({
width : 570,
height : 240,
loadMark : true,
store : store,
cm : cm,
sm : databindsm
});
var viewport = new Ext.Viewport({
height : 240,
width : 570,
items : [grid]
});
store.load(data);
alert("aa");
grid.getSelectionModel().selectRow(1,true);
alert("bb");
});
经查发现,原来是ext的mvc模式在作怪,源码中有如下方法:
// private
afterRender : function(){
Ext.grid.GridPanel.superclass.afterRender.call(this);
this.view.layout();
if(this.deferRowRender){
this.view.afterRender.defer(10, this.view);
}else{
this.view.afterRender();
}
this.viewReady = true;
},
在render数据后并没有显示页面,而是延迟渲染view,我们在view后再去选中,虽然设置了选中,但被延迟的渲染覆盖掉了,所以导致逻辑正确而显示不正确的结果。
解决办法:
1、静态store:在grid中加上一个配置项deferRowRender:false(不执行默认的render代码);
2、动态store:使用store的load事件,在装载后进行选中
grid.store.on("load",function(){
grid.getSelectionModel().selectRow(1,true);
});
分享到:
相关推荐
为了解决这个问题,可以在`combogrid`的初始化配置中设置`checkOnSelect`和`selectOnCheck`属性为`true`。此外,还需要处理复选框选中事件,确保选中的数据可以被正确设置为`combogrid`的值。下面是一个具体的实现...
在EXTJS 4.0 MVC模式下开发时,Grid组件是数据展示的核心部分,它可以用于显示大量结构化数据。在本例中,我们探讨如何在Grid中添加单元格级别的事件处理,尤其是`cellclick`事件。`cellclick`事件允许我们在用户...
Kendo UI Grid是一款强大的数据网格组件,由Telerik公司开发,广泛应用于Web应用程序中,用于展示和操作结构化的数据。这个控件提供了丰富的功能,包括数据分页、排序、过滤、编辑、分组、汇总等,同时支持触摸设备...
4. **props和slot**:组件可以通过props接收父组件传递的配置,如初始选中值、禁用某些选项等。如果需要自定义显示样式或扩展功能,可以利用slots进行内容分发。 5. **状态管理**:组件可能包含多级选择,需要维护...
在VB(Visual Basic)开发环境中,Grid列表控件是一种非常重要的UI组件,它被广泛用于数据展示和处理。Grid控件允许程序员以表格形式显示数据,使得用户可以方便地查看、编辑和操作数据。在本篇文章中,我们将深入...
DHTMLX Grid是一款强大的JavaScript组件,它允许开发者创建交互式的数据网格,用于显示、编辑和管理大量数据。这个组件提供了丰富的功能,包括数据分页、排序、过滤、编辑等,适用于构建高性能的Web应用程序。本篇...
在本文中,我们将深入探讨如何扩展ExtJS的GridPanel组件,以实现带有分页和选中状态的功能。ExtJS是一个强大的JavaScript库,用于构建富客户端应用程序,而GridPanel是其核心组件之一,用于展示和操作表格数据。通过...
dhtmlxGrid是一款强大的JavaScript数据网格组件,由DHX公司开发。这个组件在网页应用中广泛使用,用于展示和管理大量的结构化数据。它提供了丰富的功能,包括数据编辑、排序、过滤、分页、拖放操作等,能够满足各种...
然而,这个原生组件的样式和功能可能无法满足所有需求,因此我们经常需要自定义日历组件。 2. **CSS3样式**:为了创建具有吸引力的用户界面,我们需要使用CSS3来定义日历组件的布局、颜色、字体等视觉效果。可以...
《jQuery EasyUI 1.5源码...深入理解这些组件的源码,不仅可以帮助我们更好地定制和优化组件,还能提高开发效率,解决实际项目中的复杂问题。对于每一个开发者来说,掌握这些核心组件的源码都是提升技能的重要途径。
首先,要实现行点击事件的绑定,需要等待Table组件初始化完成后才能进行。初始化完成后,可以利用Layui提供的事件机制来给表格中的行(tr元素)绑定双击事件。这里需要注意的是,在HTML代码中,table元素需要被放置...
在IT行业中,数据管理和操作是核心任务之一,而dhtmlxGrid是一款强大的JavaScript组件,用于构建数据密集型Web应用程序。这个组件提供了丰富的功能,包括表格展示、数据编辑、排序、过滤等。本教程将深入探讨如何为...
在IT行业中,RadControls是Telerik公司提供的一套强大的ASP.NET控件库,它包含了一系列功能丰富的用户界面组件,如Grid、TreeView、ListView等。在本话题中,我们聚焦于"RadControls Grid checkBox 获取",这涉及到...
在IT领域,Kendo UI是一个强大的前端开发框架,它提供了丰富的UI组件,包括Grid(表格)控件。本文将深入探讨如何在Kendo UI的Multiselect Grid中实现自定义选择显示TD的功能。这个功能通常用于增强用户体验,允许...
在Vue.js框架中,创建和管理单选框的默认选中状态与传统的HTML略有不同,Vue利用其数据绑定机制和组件系统提供了更为灵活的方式。在本文中,我们将深入探讨如何在Vue中实现单选框的默认选中值,并提供一个实际的示例...
在ExtJS中,Grid是一种数据网格组件,用于展示大量结构化数据。它支持排序、过滤、分组等多种功能,是数据展示和操作的核心组件。 1. **动态加载Grid**: 动态加载意味着Grid的数据不是一次性全部加载到页面上,...
在实际使用中,开发者首先需要在HTML页面中创建一个表格元素,然后使用jQuery选择器选中该元素,并调用`jqGrid`方法进行初始化配置。配置项包括数据源、列定义、分页设置等。例如: ```javascript $("#grid")....
以上只是MATLAB GUI开发中的一部分常见问题和解决方案,实际使用中还会遇到更多复杂情况,需要不断学习和实践。MATLAB提供了丰富的文档和社区支持,对于任何问题,都可以通过查阅帮助或在线论坛寻求解答。
总的来说,这款前端表格组件结合了JavaScript的动态性、HTML的结构化和Excel的交互理念,为Web应用提供了强大且易用的数据展示和编辑解决方案。开发者可以通过学习和使用这样的组件,提升用户界面的交互体验,高效地...
`Ext.grid.GridPanel`是ExtJS 4.0中的一个关键组件,用于创建数据表格。以下为该组件的一些核心属性及其含义: - **store**: 数据存储器,用于存放表格的数据源。 - **columns**: 列配置模型,可以通过配置来定义每...