`
chenfengcn
  • 浏览: 118375 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

解决Grid组件无法初始选中问题

阅读更多
  最近在使用带复选框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);
	});
分享到:
评论
2 楼 readythink 2010-04-06  
谢谢,好!
1 楼 zhuliyong 2009-07-02  
好,  

相关推荐

    combogrid 本地搜索多列匹配及复选框选中问题

    为了解决这个问题,可以在`combogrid`的初始化配置中设置`checkOnSelect`和`selectOnCheck`属性为`true`。此外,还需要处理复选框选中事件,确保选中的数据可以被正确设置为`combogrid`的值。下面是一个具体的实现...

    Extjs4 Grid Row 事件

    在EXTJS 4.0 MVC模式下开发时,Grid组件是数据展示的核心部分,它可以用于显示大量结构化数据。在本例中,我们探讨如何在Grid中添加单元格级别的事件处理,尤其是`cellclick`事件。`cellclick`事件允许我们在用户...

    标准kendo ui-grid控件用法

    Kendo UI Grid是一款强大的数据网格组件,由Telerik公司开发,广泛应用于Web应用程序中,用于展示和操作结构化的数据。这个控件提供了丰富的功能,包括数据分页、排序、过滤、编辑、分组、汇总等,同时支持触摸设备...

    vue城市选择组件

    4. **props和slot**:组件可以通过props接收父组件传递的配置,如初始选中值、禁用某些选项等。如果需要自定义显示样式或扩展功能,可以利用slots进行内容分发。 5. **状态管理**:组件可能包含多级选择,需要维护...

    Grid列表控件

    在VB(Visual Basic)开发环境中,Grid列表控件是一种非常重要的UI组件,它被广泛用于数据展示和处理。Grid控件允许程序员以表格形式显示数据,使得用户可以方便地查看、编辑和操作数据。在本篇文章中,我们将深入...

    DHTMLX grid复制以及分页栏跳转

    DHTMLX Grid是一款强大的JavaScript组件,它允许开发者创建交互式的数据网格,用于显示、编辑和管理大量数据。这个组件提供了丰富的功能,包括数据分页、排序、过滤、编辑等,适用于构建高性能的Web应用程序。本篇...

    扩展GridPanel,附带分页选中状态,实现快速构建一个功能齐全的Grid

    在本文中,我们将深入探讨如何扩展ExtJS的GridPanel组件,以实现带有分页和选中状态的功能。ExtJS是一个强大的JavaScript库,用于构建富客户端应用程序,而GridPanel是其核心组件之一,用于展示和操作表格数据。通过...

    dhtmlxGrid_v14_Pro_70813.rar

    dhtmlxGrid是一款强大的JavaScript数据网格组件,由DHX公司开发。这个组件在网页应用中广泛使用,用于展示和管理大量的结构化数据。它提供了丰富的功能,包括数据编辑、排序、过滤、分页、拖放操作等,能够满足各种...

    移动端H5日历组件

    然而,这个原生组件的样式和功能可能无法满足所有需求,因此我们经常需要自定义日历组件。 2. **CSS3样式**:为了创建具有吸引力的用户界面,我们需要使用CSS3来定义日历组件的布局、颜色、字体等视觉效果。可以...

    jquery-easyui1.5 源码

    《jQuery EasyUI 1.5源码...深入理解这些组件的源码,不仅可以帮助我们更好地定制和优化组件,还能提高开发效率,解决实际项目中的复杂问题。对于每一个开发者来说,掌握这些核心组件的源码都是提升技能的重要途径。

    Layui组件Table绑定行点击事件和获取行数据的方法

    首先,要实现行点击事件的绑定,需要等待Table组件初始化完成后才能进行。初始化完成后,可以利用Layui提供的事件机制来给表格中的行(tr元素)绑定双击事件。这里需要注意的是,在HTML代码中,table元素需要被放置...

    dhtmlxGrid的数据集添加查找定位功能

    在IT行业中,数据管理和操作是核心任务之一,而dhtmlxGrid是一款强大的JavaScript组件,用于构建数据密集型Web应用程序。这个组件提供了丰富的功能,包括表格展示、数据编辑、排序、过滤等。本教程将深入探讨如何为...

    RadControls Grid checkBox 获取

    在IT行业中,RadControls是Telerik公司提供的一套强大的ASP.NET控件库,它包含了一系列功能丰富的用户界面组件,如Grid、TreeView、ListView等。在本话题中,我们聚焦于"RadControls Grid checkBox 获取",这涉及到...

    multiselectingrid自定义选择显示td

    在IT领域,Kendo UI是一个强大的前端开发框架,它提供了丰富的UI组件,包括Grid(表格)控件。本文将深入探讨如何在Kendo UI的Multiselect Grid中实现自定义选择显示TD的功能。这个功能通常用于增强用户体验,允许...

    vue 实现单选框设置默认选中值

    在Vue.js框架中,创建和管理单选框的默认选中状态与传统的HTML略有不同,Vue利用其数据绑定机制和组件系统提供了更为灵活的方式。在本文中,我们将深入探讨如何在Vue中实现单选框的默认选中值,并提供一个实际的示例...

    ExtJS 实现动态处理加载 grid 实现了CRUD还有分页功能

    在ExtJS中,Grid是一种数据网格组件,用于展示大量结构化数据。它支持排序、过滤、分组等多种功能,是数据展示和操作的核心组件。 1. **动态加载Grid**: 动态加载意味着Grid的数据不是一次性全部加载到页面上,...

    jqGrid v3.3.1 jQuery Data Grid

    在实际使用中,开发者首先需要在HTML页面中创建一个表格元素,然后使用jQuery选择器选中该元素,并调用`jqGrid`方法进行初始化配置。配置项包括数据源、列定义、分页设置等。例如: ```javascript $("#grid")....

    MATLAB学习总汇与问题解决方案总结

    以上只是MATLAB GUI开发中的一部分常见问题和解决方案,实际使用中还会遇到更多复杂情况,需要不断学习和实践。MATLAB提供了丰富的文档和社区支持,对于任何问题,都可以通过查阅帮助或在线论坛寻求解答。

    EXTGrid属性方法

    `Ext.grid.GridPanel`是ExtJS 4.0中的一个关键组件,用于创建数据表格。以下为该组件的一些核心属性及其含义: - **store**: 数据存储器,用于存放表格的数据源。 - **columns**: 列配置模型,可以通过配置来定义每...

    ext 论坛摘要====

    但是,如果需要根据单元格内容动态生成链接,直接在`renderer`中定义的方法可能不够灵活,因为它在表格初始化后无法改变。 解决这个问题的一种方法是使用全局变量和自定义的`DomUrl`函数。在函数内部,我们可以...

Global site tag (gtag.js) - Google Analytics