`
starbhhc
  • 浏览: 654721 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

EXT 中的Grid实例

阅读更多
为Grid配置了Ext.grid.CheckboxSelectionModel()属性,但达不到想的效果,去查看了源码,也没看出个所以然,请教各位前辈,用什么方法可以实现以下两种效果:

1.点击记录只改变背景色,不改变选择状态。要想选中,只能去点击checkbox
2.点击记录,选中该记录,但不改变其它已选中记录的状态。

源码:

gridJson.js

// ext-grid.2.x

Ext.onReady(function(){
     
  
// 定义一个checkBox 
var sm = new Ext.grid.CheckboxSelectionModel(); 
sm.handleMouseDown = Ext.emptyFn;

// 定义一个ColumnModel,表头中有四列
var cm = new Ext.grid.ColumnModel([
            sm,
  {header:'编号',dataIndex:'id'},
  {header:'名称',dataIndex:'name'},
  {header:'描述',dataIndex:'descn'}
]);

/*===================== 判断红男绿女 =====================*/
function myRenderSex(value){
  if (value == 'male'){
   return "<span style='color:red;font-weight:bold;'> 红男 </span><img src='\images\\male.png' />";
  }else{
   return "<span style='color:green;font-weight:bold;'> 绿女 </span><img src='\images\\fmale.png' />";
  }
}

/*===================== 察看详细 =====================*/
function renderDescn(value, cellmeta, record, rowIndex, columnIndex, store) {
  var str = "<input type='button' value='查看详细信息' onclick='alert(\"" +
   "这个单元格的值是:" + value + "file://n/" +
   "这个单元格的配置是:{cellId:" + cellmeta.cellId + ",id:" + cellmeta.id + ",css:" + cellmeta.css + "}\\n" +
   "这个单元格对应行的record是:" + record + ",一行的数据都在里边file://n/" +
   "这是第" + rowIndex + "行file://n/" +
   "这是第" + columnIndex + "列file://n/" +
   "这个表格对应的Ext.data.Store在这里:" + store + ",随便用吧。" +
   "\")'>";
  return str;
}

/*===================== 二维数组 =====================*/
/* ArrayData:添加数据 */
var data = [
  ['1','name1','descn1'],
  ['2','name2','descn2'],
  ['3','name3','descn3'],
  ['4','name4','descn4'],
  ['5','name5','descn5']
];

/* ArrayReader
  * ds要对应两个部分:proxy和reader。proxy告诉我们从哪里获得数据,reader告诉我们如何解析这个数据。
  * Ext.data.MemoryProxy,它是专门用来解析js变量的。你可以看到,我们直接把data作为参数传递进去了。
  */
var ds = new Ext.data.Store({
  /*
  proxy: new Ext.data.MemoryProxy(data),
  reader: new Ext.data.ArrayReader({}, [
   {name: 'id',mapping: 0},
   {name: 'sex',mapping: 1},
   {name: 'name',mapping: 2},
   {name: 'descn',mapping: 3}
  ])
  */
  proxy: new Ext.data.HttpProxy({url:'gridJsonData.jsp'}),
  reader: new Ext.data.JsonReader({
   totalProperty: 'totalProperty',
   root: 'root'
   }, [
   {name: 'id'},
   {name: 'name'},
   {name: 'descn'}
  ]) 
});
 
/* 装配 */
/*
  注意:Ext.grid.Grid的第一个参数是渲染的id,
  对应在html里应该有一个 <div id="grid"></div>的东西,这样grid才知道要把自己画到哪里。
  创建完grid以后,还要用grid.render()方法,让grid开始渲染,这样才能显示出来。
*/

cm.defaultSortable   =   true;  // 设置列可排序

var grid = new Ext.grid.GridPanel({
  el: 'grid',
  ds: ds,
  cm: cm,  
  //sm: sm, 
  // 定义分页
  bbar: new Ext.PagingToolbar({
   pageSize: 10,
   store: ds,
   displayInfo: true,
   displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',
   emptyMsg: "没有记录"
     }),
  sm: sm,
  title: "Grid 例子",
  height: 300
});

grid.on('rowclick', function(grid,t) {
  if(sm.isSelected(t))
   sm.deselectRow(t);
  else
   sm.selectRow(t,true);
});

ds.load({params:{start:0, limit:10}});

grid.render();


})





gridJsonData.jsp

   <%  
   String start = request.getParameter("start");
   String limit = request.getParameter("limit");
   //String start = "0";
   //String limit = "100";
   try {
    int index = Integer.parseInt(start);
    int pageSize = Integer.parseInt(limit);
  
    String json = "{totalProperty:100,root:[";
    for (int i = index; i < pageSize + index; i++) {
     json += "{id:" + i + ",name:'name" + i + "',descn:'descn" + i + "'}";
     if (i != pageSize + index - 1) {
      json += ",";
     }
    }
    json += "]}";
    response.getWriter().write(json);
    } catch(Exception ex) {
    }
   %>




grid.jsp

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Grid</title>
  <!-- Base Js Lib-->
  <script type="text/javascript" src="http://www.cnblogs.com/extPlus/release2/js/ext-base.js"></script>
  <script type="text/javascript" src="http://www.cnblogs.com/extPlus/release2/js/ext-all.js"></script>
  <script type="text/javascript" src="http://www.cnblogs.com/extPlus/release2/js/ext-lang-zh_CN.js"></script>

  <!-- Base css and patch-->
  <link rel="stylesheet" type="text/css" href="http://www.cnblogs.com/extPlus/release2/resources/css/ext-all.css" />
  <link rel="stylesheet" type="text/css" href="http://www.cnblogs.com/extPlus/release2/css/ext-patch.css" />
 
  <!-- local js lib-->
  <script type="text/javascript" src="gridJson.js"></script>

</head>

<body>

<table width="600" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
  <td >测试</td>
</tr>

<tr>
  <td >
  <div id="grid"></div>
  </td>
</tr>

</table>
</body>
</html>



分享到:
评论

相关推荐

    一个很好的EXTGRID实例

    在"一个很好的EXTGRID实例"中,我们可以看到一个BS(Browser/Server)架构的应用,它采用EXT GRID作为用户界面的核心部分,用于显示和管理人员信息。BS架构意味着大部分业务逻辑和数据显示都在浏览器端处理,而...

    Ext grid 简单实例

    在这个实例中,Store将与Web服务接口通信以获取数据。 2. **Model**: Model定义了数据字段和它们的数据类型,它为Grid提供数据结构。 3. **Column Model**: Column Model定义了Grid中列的配置,包括列的标题、数据...

    Ext grid 分页实例源码

    Ext grid PagingToolbar分页实例源码Ext grid PagingToolbar分页实例源码Ext grid PagingToolbar分页实例源码Ext grid PagingToolbar分页实例源码

    EXT2.0 GRID 示例

    EXT2.0 GRID 示例是一个基于EXT JavaScript库的高级数据展示和操作组件的实例。EXT是一个强大的前端开发框架,尤其在创建交互式Web应用程序方面表现出色。EXT2.0是EXT库的一个早期版本,它提供了丰富的用户界面组件...

    ext tree grid 的高级实例运用

    在这个实例中,`Tree`和`Grid`可能都被嵌入到同一个`Panel`中,这样可以统一管理和控制整个界面布局,使得界面看起来更加整洁和协调。 多级选择功能是`Tree`组件的一大亮点。用户不仅可以选中单个节点,还能一次性...

    Ext grid与树实例

    Ext Grid和Tree是Ext JS库中的两种重要组件,它们在Web应用开发中广泛用于数据展示和组织。Ext JS是一个强大的JavaScript框架,它提供了一系列高级UI组件,帮助开发者构建功能丰富的、交互性强的Web应用程序。 首先...

    ext grid网格控件实例

    在测试EXT Grid实例之前,确保已经下载了EXT JS库文件,包括CSS样式表、JavaScript库和必要的图片资源。EXT Grid的配置涉及很多方面,如列定义、排序、过滤、编辑等,需要根据具体需求进行定制。同时,理解EXT JS的...

    ext后台经典实例

    在EXT后台经典实例中,数据模型通常对应于后端数据库中的表结构。 3. **Store**:Store是EXT中管理数据的核心组件,它链接到数据源(如服务器),负责加载、缓存和处理数据。在"增删改查"操作中,Store会触发加载、...

    JSP中使用EXT实现grid table

    在JavaServer Pages (JSP) 开发中,EXT 是一个流行的JavaScript 框架,它提供了丰富的用户界面组件,包括Grid(数据网格)和Table。EXT 提供了一种优雅的方式来展示和操作数据,尤其适用于创建交互式的Web应用程序,...

    ext2.0 grid 分页实例(php)

    - 首先,你需要创建一个Grid实例,并指定数据源(Store)。在Ext JS 2.0中,Store通常与远程数据源(例如PHP页面)通过JSON或XML进行通信。 - 为Grid添加分页栏(Paging Toolbar),它包含页码按钮、跳转输入框等...

    EXT_JS实例,官方实例

    在"EXT_JS实例,官方实例"这个压缩包中,你将找到EXT JS 3.2.1版本的官方示例。EXT JS 3.2.1是一个稳定且广泛使用的版本,包含了各种功能和改进,包括表格、树形视图、网格、表单、菜单、工具提示、窗口和其他UI组件...

    Ext自定义Grid Cell插件

    在实际项目中,你需要理解这两个文件中的代码逻辑,以便在Grid的单元格中正确地实例化和使用这些组件。 通过这样的自定义插件,我们可以极大地提升用户界面的交互性和用户体验。同时,这也体现了Ext JS框架的灵活性...

    EXT 中文手册 用实例来说话

    最后,"EXT 中文手册 用实例来说话"很可能会包含一些实战项目或案例,帮助读者将理论知识应用到实际开发中,提高解决实际问题的能力。对于初学者,这样的实践是非常有益的,可以加速理解和掌握EXTJS。 总的来说,这...

    ext grid 导出excel 代码实例

    1. **创建EXT Grid**:首先,你需要创建一个EXT Grid实例,定义列模型、数据源、以及任何其他必要的配置项。例如,你可以使用`Ext.create('Ext.grid.Panel', { ... })`来创建Grid,并设置`columns`,`store`等属性。...

    Ext4.2 MVC 实例 源码

    Ext4.2 MVC 实例 源码 grid tree layout。。。

    Ext.grid.GridPanel属性祥解

    每一项都是一个`Ext.grid.Column`实例。 - 示例:`columns: [{ header: '姓名', dataIndex: 'name' }, { header: '年龄', dataIndex: 'age' }]` 3. **autoExpandColumn** - 说明:此配置项指定了一个列ID,该列会...

    Ext框架的Grid使用介绍

    Grid组件在EXT JS中扮演着数据表格的角色,可以展示多列数据,并且支持排序、分页、筛选、编辑等功能。它的灵活性在于能够根据需求定制各种复杂的行为,如自定义列渲染、行编辑、拖放排序等。以下是一些关于EXT JS ...

    ext grid 显示数据

    在"LearningExtJS 第五章节的翻译"中,我们可以期待找到关于EXT JS Grid的详细讲解和实例应用。 EXT JS的Grid组件提供了丰富的功能,如分页、排序、过滤、编辑等,可以灵活地适应各种业务需求。以下是一些关于EXT ...

    ext-grid+json简单应用

    一旦定义了Grid的列和存储器,我们可以创建Grid实例并将它们关联起来: ```javascript var grid = Ext.create('Ext.grid.Panel', { store: store, columns: columns, renderTo: Ext.getBody() // 将Grid渲染到...

    Ext grid合并单元格

    根据提供的文件信息,我们可以深入探讨如何在 Ext JS 中实现 Grid 的单元格合并功能。此案例主要涉及到了自定义 GridView 的 `renderHeaders` 方法来达到单元格合并的目的,并且还涉及了模板(Template)的使用、...

Global site tag (gtag.js) - Google Analytics