`

ExtJs入门练习:GridPanel

    博客分类:
  • Ajax
阅读更多
代码执行结果展示:


/********************************************
 * @author  henyue@gmail.com (Kong)
 * @version CreatedTime:2010-4-27 下午16:11:12
 * @Description ExtJs入门练习:GridPanel
 ********************************************/

// 勾选模型
var sm = new Ext.grid.CheckboxSelectionModel({
  singleSelect: false
//singleSelect设置为true,则应用到grid之后只能单选,默认为false
});

// 列模型
var cm = new Ext.grid.ColumnModel([
  new Ext.grid.RowNumberer(),// Ext封装的特殊类,用于显示行号
  sm,
  {
    id : "title",
    header : "标题",
    width : 150,
    dataIndex : "title",
    tooltip : "文章标题",
    renderer : function(v) {
      return "<u>" + v + "</u>";// renderer方法,可组合jsonObj内多个属性一次返回
    }
  }, {
    header : "作者",
    width : 50,
    dataIndex : "author"
  }, {
    header : "创建时间",
    width : 150,
    format : "Y-m-d",
    dataIndex : "createdTime",
    renderer : Ext.util.Format.dateRenderer("Y-m-d")
  }, {
    header : "操作",
    width : 100,
    dataIndex : "rowId",
    menuDisabled : true,
    renderer : function(v) {
      var modify = "<a href='modify?newsId=" + v + "'>修改</a>";
      var remove = "<a href='delete?newsId=" + v + "'>删除</a>";
      return "<span align='center'>" + modify + "&nbsp;" + remove
      + "</span>";
    }
  }]);

// Dummy数据
var data = [{
  rowId : 5,
  title : "论雷峰塔的倒掉",
  author : "鲁迅",
  createdTime : Date.parseDate("2010-04-26", "Y-m-d")
}, {
  rowId : 2,
  title : "背影",
  author : "朱自清",
  createdTime : Date.parseDate("2010-04-26", "Y-m-d")
}, {
  rowId : 3,
  title : "鲁提辖拳打镇关西",
  author : "施耐庵",
  createdTime : Date.parseDate("2010-04-26", "Y-m-d")
}, {
  rowId : 1,
  title : "沁园春 雪",
  author : "毛 泽 东",
  createdTime : Date.parseDate("2010-04-26", "Y-m-d")
}, {
  rowId : 4,
  title : "蜀道难",
  author : "李白",
  createdTime : Date.parseDate("2010-04-26", "Y-m-d")
}];

// 代理,使用Dummy数据
var proxy = new Ext.data.MemoryProxy(data);

// Record 定义记录结果
var News = Ext.data.Record.create([{
  name : "title",
  type : "string",
  mapping : "title"
},
// 每个元素的name属性必须与data里的属性字段相同,包括大小写,否则读不出数据且不会报错
{
  name : "author",
  type : "string",
  mapping : "author"
}, {
  name : "createdTime",
  type : "string",
  mapping : "createdTime"
}, {
  name : "rowId",
  mapping : "rowId"
}]);

// Reader
var reader = new Ext.data.JsonReader({}, News);

// Store
var store = new Ext.data.Store({
  proxy : proxy,
  reader : reader
});
store.load();

Ext.onReady(function() {

  var grid = new Ext.grid.GridPanel({
    title : "新闻列表",
    width : 500,
    autoHeight : true,
    cm : cm,
    sm : sm,
    //如果只在ColumnModel中加sm而不在grid构造中加,有以下后果:
    //1.不能实现多选;
    //2.不能实现标题行的CheckBox被选中时全选
    store : store,
    renderTo : "a",
    autoExpandColumn : "title",
    tbar : [{
      text : "删除选定行",
      icon : "ext/resources/images/default/dd/drop-no.gif",
      cls : "x-btn-text-icon",
      handler : function() {
        var rsm = grid.getSelectionModel();
        var view = grid.getView();
        var store = grid.getStore();
        for (var i = view.getRows().length - 1; i >= 0; i--) {
          if (rsm.isSelected(i)) {
            store.remove(store.getAt(i));
          }
        }
        view.refresh();
      }
    }, {
      text : "删除所有行",
      icon : "ext/resources/images/default/dd/drop-no.gif",
      cls : "x-btn-text-icon",
      handler : function() {
        Ext.Msg.confirm("警告", "确定要删除所有数据么?", function (btn) {
          if (btn == "yes") {
            var store = grid.getStore();
            store.removeAll();
            grid.getView().refresh();
          }
        })
      }
    }, '-', { //'-'为间隔标志符号|
      text : "新建内容",
      icon : "ext/resources/images/default/dd/drop-add.gif",
      cls : "x-btn-text-icon",
      handler : function() {
        Ext.Msg.prompt("新建", "标题:", function (btn, txt) {
          var newItem = {
            title : txt,
            author : "Kong",
            createdTime : new Date()
          }
          var news = new News(newItem);
          grid.getStore().insert(0, news);
          grid.getView().refresh();
        })
      }
    }, {
      text : "获取指定行内容",
      icon : "ext/resources/images/default/dd/drop-yes.gif",
      cls : "x-btn-text-icon",
      handler : function() {
        var rsm = grid.getSelectionModel();
        for (var i = 0; i < grid.getView().getRows().length; i++) {
          if (rsm.isSelected(i)) {
            var record = grid.getStore().getAt(i);
            var title = record.get("title");
            var author = record.get("author");
            var createdTime = record.get("createdTime");
            var rowId = record.get("rowId");
            Ext.Msg.alert("Info", title + "<br/>" + author + "<br/>" + createdTime + "<br/>" + rowId);
          }
        }
      }
    }],
    buttonAlign : "right",
    buttons : [{
      text : "第一行",
      handler : function() {
        var rowSelectModel = grid.getSelectionModel();
        //得到行选择模型
        rowSelectModel.selectFirstRow();
      }
    }, {
      text : "上一行",
      handler : function() {
        var rsm = grid.getSelectionModel();
        if (!rsm.hasPrevious()) {
          Ext.Msg.alert("警告", "已到达第一行");
        } else {
          rsm.selectPrevious();
        }
      }
    }, {
      text : "下一行",
      handler : function() {
        var rsm = grid.getSelectionModel();
        if (rsm.hasNext()) {
          rsm.selectNext();
        } else {
          Ext.Msg.alert("警告", "已到达最后一行");
        }
      }
    }, {
      text : "全选",
      handler : function() {
        var rsm = grid.getSelectionModel();
        rsm.selectAll();
      }
    }, {
      text : "全不选",
      handler : function() {
        var rsm = grid.getSelectionModel();
        rsm.deselectRange(0, grid.getView().getRows().length - 1);
      //grid.getView().getRows().length 可以获得表格的总行数
      //注意:Ext.grid.RowSelectionModel的getCount方法返回的是选择的总行数
      }
    }, {
      text : "反选",
      handler : function() {
        var rsm = grid.getSelectionModel();
        for (var i = grid.getView().getRows().length - 1; i >= 0; i--) {
          if (rsm.isSelected(i)) {
            rsm.deselectRow(i);
          } else {
            rsm.selectRow(i, true);
          //selectRows方法为选取多行,第二个参数表示为保持现有的选区状态
          //如果只是用rsm.selectRow(i),则每次都会选择第一行
          }
        }
      }
    }]
  });
});
  • 大小: 20.6 KB
分享到:
评论

相关推荐

    无废话ExtJs 系统教程十四[列表:GridPanel]

    在"无废话ExtJS 系统教程十四[列表:GridPanel]"中,我们将会深入探讨如何有效地使用GridPanel来创建高效的、功能丰富的数据列表。 GridPanel是ExtJS中的核心组件之一,它允许用户以表格形式展示大量数据,并支持...

    Extjs入门教程(treePanel和GridPanel)

    总的来说,这门入门教程将带你进入ExtJS的世界,通过TreePanel和GridPanel的实践,你将掌握基本的组件使用和数据管理技巧,为构建更复杂的企业级应用打下基础。记得在实践中不断探索和实验,理论结合实际,才能真正...

    Extjs中的GridPanel

    GridPanel 是 ExtJS 中的核心组件之一,它提供了一种高效、可定制的方式来展示大量结构化数据。在这个主题中,我们将深入探讨 GridPanel 的关键特性和使用方法。 1. **GridPanel 基本结构**: GridPanel 包含了行...

    ExtJS4.0下的gridPanel组建完全版

    7. **插件扩展**:GridPanel可以与其他ExtJS组件和插件结合使用,如行选择器(RowSelectionModel)、检查列(CheckColumn)和拖放排序(DragDrop)。这些插件增强了GridPanel的功能,使其更加灵活和强大。 8. **...

    ExtJS快速入门 ExtJS快速入门 ExtJS快速入门

    ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS...ExtJS快速入门 ExtJS快速入门 ExtJS快速入门ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门

    ExtJS入门教程(超级详细).pdf

    ExtJS入门教程(超级详细).pdf

    ExtJs GridPanel双击事件获得双击的行

    在ExtJs中,GridPanel是用于展示数据的常用组件,它可以提供丰富的功能,如排序、分页、筛选等。在实际应用中,我们经常需要监听用户的交互行为,比如双击行进行进一步的操作。本篇文章将深入讲解如何在ExtJs ...

    ExtJS 表格面板GridPanel完整例子

    ExtJS表格面板(GridPanel)是Sencha Ext JS框架中的一个核心组件,它用于展示大量结构化数据。在本文中,我们将深入探讨如何创建并使用一个完整的ExtJS GridPanel实例,以及与其相关的源码和工具。 首先,让我们...

    ExtJS介绍以及GridPanel

    在本文中,我们将深入探讨ExtJS的核心特性,特别是其GridPanel组件。 首先,ExtJS的核心特性之一是组件化。它将网页元素抽象为可复用的组件,如按钮、表格、窗口等,每个组件都有自己的属性、方法和事件,可以方便...

    给Extjs的GridPanel增加“合计”行

    在EXTJS中,GridPanel是一种常用的组件,用于展示表格数据。在实际应用中,我们经常需要在GridPanel底部显示一行“合计”行,以便对某一列或多列的数据进行求和或其他统计操作。这篇博文“给Extjs的GridPanel增加...

    ExtJs开源项目:网络硬盘PHP版(附演示网址)

    `js`目录则包含了除ExtJs库之外的JavaScript代码,可能包括项目特定的逻辑、辅助函数或与ExtJs集成的自定义组件。 综合以上信息,我们可以得出,这个开源项目是一个结合了ExtJs前端技术和PHP后端的网络硬盘应用。...

    ExtJs GridPanel延时加载.rar

    在给定的"ExtJs GridPanel延时加载.rar"文件中,主要涉及的核心概念是ExtJs中的GridPanel组件以及延时加载技术。GridPanel是ExtJs中一个非常重要的组件,它用于展示表格数据,而延时加载则是一种优化大量数据处理的...

    ExtJs入门实例.doc

    《ExtJs入门实例详解》 ExtJs是一款强大的JavaScript前端框架,用于构建富客户端应用。它以其丰富的组件库、强大的数据绑定机制以及优雅的MVC设计模式而闻名。本文将围绕ExtJs2.0入门实例,重点讲解Ext.MessageBox...

    extjs入门到精通

    extjs入门到精通,实例有简单到复杂,还有综合实力,下载即可运行,环境也是配好的,希望对你有帮助!

    ExtJS2Samples-v2.0.0.zip_C语言_ExtJS2Samples_V2 _extjs_site:www.pu

    《ExtJS2Samples-v2.0.0.zip:探索C语言与ExtJS2Samples的结合应用》 在软件开发领域,C语言以其高效、灵活和强大的底层控制能力,始终占据着重要的地位。与此同时,Web前端技术也在不断发展,ExtJS作为一款优秀的...

    ExtJs学习例子:多级联动下拉菜单演示例子

    前台采用ExtJs 2.2.1编写(由于库文件比较大,考虑到大家本机都有了,所以在此没有上传,大家直接改一下路径即可),后台采用asp+access编写(看文件名就知道了). 本例子演示的4级联动菜单:州+国家+城市+地区

    Extjs+lazarus:CRUD网页的快速实现

    用的extjs是3.4版,在新的extjs4.2环境下不能运行,费了好大劲,终于搞定。期间到laz英文论坛提问,可能跟我英文差有关吧,一个回答的都没有。搞定后,版主又要我进行了“ open a new issue in the bugtracker and ...

    ExtJS的GridPanel导出excel文件

    ExtJS的GridPanel导出excel文件,方便快捷易懂!

    ExtJs入门 ExtJs很好的电子书 ExtJS入门.pdf 入门ExtJs必备电子书

    ### ExtJs 入门知识点详解 #### 一、ExtJs简介与核心概念 - **ExtJs**是一款基于JavaScript的企业级富客户端应用开发框架,它提供了一系列丰富的UI组件和功能强大的工具,使得开发者能够轻松地创建出高质量的Web...

    extjs练习extjs练习

    一些ext练习例子,一些ext练习例子,

Global site tag (gtag.js) - Google Analytics