ExtJS:GridPanel之renderer:function()和itemdblclick : function()方法参数详解

要使用GridPanel,首先要定义Store,而在创建Store的时候必须要有Model,因此我们首先来定义Model:

Ext.define("Gpsdata", {
    extend: "Ext.data.Model",
    fields: [
        { name: ‘gpstime‘, type: ‘string‘ },
        { name: ‘gpstemp‘, type: ‘string‘ }
    ]
});

然后创建Store:

	var surfacestore = new Ext.data.Store({
	    model : ‘Gpsdata‘,
	    pageSize : 22,
	    proxy : {
	        type : ‘ajax‘,
	        url : ‘gpsdata/grid‘,
	        reader : {
	            type : ‘json‘,
	            root : ‘dataOfAll‘,
	            totalProperty : ‘total‘
	        }
	    },
		listeners : {
			beforeload : function(store, operation, opts) {

				Ext.MessageBox.show({
					title : ‘请等待‘,
					msg : ‘数据读取中……‘,
					width : 240,
					progress : true,
					closable : false
				});

				Ext.MessageBox.wait(‘数据读取中……‘, ‘‘, {
					duration : 900000,
					interval : 500,
					increment : 10,
					scope : this,
					fn : function() {
					}
				});
			},
			load : function(store, records, successful, opts) {
				if (successful) {
					Ext.MessageBox.hide();
				} else {
					Ext.MessageBox.hide();
				}
			}
		}
	});

创建GridPanel

	var surfacegrid = Ext.create(‘Ext.grid.Panel‘, {
        id: ‘surface‘,
        title: ‘数据列表展示‘,
        store: surfacestore,
        disableSelection: true,
        loadMask: true,
        viewConfig: {
            trackOver: false,
            stripeRows: false
        },
        columns:[
                 new Ext.grid.RowNumberer(),{
            text: "时间",
            dataIndex: ‘gpstime‘,
            sortable: true,
            flex: 3
        },{
            text: "水温"+‘(℃)‘,
            renderer:function(value, cellmeta, record, rowIndex, columnIndex, store){

            	//value="<span style=‘color:red;font-weight:bold;‘>红男</span>";
            	return value;
            },
            dataIndex: ‘gpstemp‘,
            flex: 2
        }],
        listeners: {
        	itemdblclick : function(view, record, item, index, e, eOpts) {
        		   var gpsname=record.get(‘gpsname‘);
        		   //alert(gpsname);
        }},
        bbar: Ext.create(‘Ext.PagingToolbar‘, {
            store: surfacestore,
            displayInfo: true,
            displayMsg: ‘显示监测数据 {0} - {1} of {2}‘,
            emptyMsg: "无数据"
        })
    });

renderer:function(value, cellmeta, record, rowIndex, columnIndex, store){ }

解析:
value:将要像是单元格里的值,即dataIndex的值
cellmeta:单元格的相关属性,主要是id和CSS
record:这行的数据对象。通过record.data[‘id‘]方式得到其他列的值
rowIndex:行号
columnIndex:当前列的行号
store:构造表格时传递的ds,也就是说,表格里所有的数据都可以通过store获得。

listeners: {itemdblclick : function(view, record, item, index, e, eOpts) {    }}

解析:
view:Ext.view.View  
record : Ext.data.Model The record that belongs to the item
item : HTMLElement The item‘s element
index : Number The item‘s index
e : Ext.EventObject The raw event object
eOpts : Object The options object passed to Ext.util.Observable.addListener.

Extjs GridPanel的列
Extjs GridPanel的列有多种类型,例如:文本列、数字列、日期列、选择框列、操作列等。我们可以通过xtype来指定不同的列类型。
下面是列的常用配置项:
xtype:列类型
text:列头显示的文字
dataIndex:绑定的字段名
width:宽度
flex:自动适应的宽度
sortable:是否可排序,默认为是
hideable:是否可隐藏,默认为是
locked:锁定列,将列锁定在grid的开头,当grid出现滚动条的时候该属性比较有用。默认为否
lockable:是否可锁定,默认为否
format:格式化字符串,常用于日期、数字的格式化。日期:‘Y-m-d‘;日期时间:‘Y-m-d H:i:s‘;数字:‘0,000.00‘(带有千位分隔符、保留两位小数)、‘0.00‘(保留两位小数),‘0‘(不保留小数)
renderer:自定义绘制方法,可以是Ext.util.Format中定义好的方法名称,也可以是自定义否function,该方法接收下面的参数:value、metadata、record、rowIndex、colIndex、store、view,并需要一个用来显示的返回值。
editor:编辑器,当使用编辑插件的时候才会起作用。

Extjs GridPanel行选择模型(SelectionModel)
控制Extjs GridPanel行选择模型的两个配置项是selType和selModel。默认情况下,selType为rowmodel,对应的Ext.selection.Model。这种选择模型不会在grid中添加复选框,它通过点击行进行选中,默认为多选“MULTI”。

如果我们要使用复选框来选择行,我们需要使用下面的配置:
selType: "checkboxmodel",
然后,我们可以通过selModel来配置selType:
selModel: {
    injectCheckbox: 0,
    mode: "SIMPLE",     //"SINGLE"/"SIMPLE"/"MULTI"
    checkOnly: true     //只能通过checkbox选择
},

Extjs GridPanel行选择
除了界面操作来选中行,我们还可以通过代码来选中行:
//选择行,并保持其他行的选择状态
grid.getSelectionModel().select(records, true);
//选择所有
grid.getSelectionModel().selectAll();
//根据row index选择
grid.getSelectionModel().selectRange(startRow, endRow, true)
Extjs GridPanel获取选中行
获取选中行,仍然需要通过SelectionModel来完成:
var records = grid.getSelectionModel().getSelection();

时间: 2024-08-30 06:15:43

ExtJS:GridPanel之renderer:function()和itemdblclick : function()方法参数详解的相关文章

浅析JavaScript中Function对象(二) 之 详解call&amp;apply

函数是js中最复杂的一块内容,其中call() 和 apply()又是重灾区,初学者往往在这个坑里栽倒,这次来分析这2个函数对象的成员 一.函数的角色 在js的体系下,js有3种角色.分别是普通函数.构造器.对象. 1.普通函数 <script type="text/javascript"> function f1(){ console.log('这是个函数'); } </script> 这里声明的f1,它的角色就是个普通函数 2.构造器 <script

ExtJs如何判断form表单是否被修改过详解

1.Extjs表单提交主要有三种方式: 1, EXT的form表单ajax提交(默认提交方式)      相对单独的ajax提交来说优点在于能省略写参数数组 ,form.getForm().submit 3.EXT的ajax提交,Ext.Ajax.request 2.EXT表单的非ajax提交 在我看来:采用第1,2种都很方便,关键是Ext.Ajax.request传递给后台是一个字符串形式的,需要Jason解析 2.记录代码问题: 1 SaveStudentDetails:function(b

Extjs GridPanel用法详解

Extjs GridPanel 提供了非常强大数据表格功能,在GridPanel可以展示数据列表,可以对数据列表进行选择.编辑等.在之前的Extjs MVC开发模式详解中,我们已经使用到了GridPanel,今天我们来介绍一下Extjs中GridPanel的详细用法. 本文的示例代码适用于Extjs 4.x和Extjs 5.x,在Extjs 4.2.1 和Extjs 5.0.1中亲测可用! 本文由齐飞([email protected])原创,并发布在http://www.qeefee.com/

Extjs GridPanel在有分页的情况下服务端统计合计实现方式

1.应用场景 在有分页的时候计算合计就不能采用Extjs gridpanel 提供的ftype: summary方式解决,否则只计算当前页的合计(因为数据只提取了当前页): 2.解决办法 重写Ext.grid.feature.Summary中的generateSummaryData函数 //方法一,临时重写 Ext.grid.feature.Summary.override({ generateSummaryData:function(){ return this.view.store.getP

K-means: optimization objective(最小化cost function来求相应的参数)

类似于linear regression,K-means算法也optimization objective或者是试图使cost function求最小值. 了解K-means算法的optimization objective有助于我们(1)调试算法时,看算法是否运行正确(在本节中可以看到)(2)使算法找到更好的cluster,避免局部最优解(在下节中会讲) K-means optimization objective uc(i):表示x(i)分给的那个cluster的cluster centro

Function Smackdown: Function Statement vs. Function Expression

I’ve recently been reading ‘JavaScript: The Good Parts,’ by Douglas Crockford. This concise book defines a subset of core JavaScript that’s robust and powerful: The Good Parts. Appendix B identifies The Bad Parts, and sets our competitors - the funct

S函数 Sigmoid Function or Logistic Function

octave代码 x = -10:0.1:10; y = zeros(length(x), 1); for i = 1:length(x) y(i) = 1 / (1 + exp(-x(i))); end figure; plot(x, y, '-b', 'LineWidth', 2); S函数 Sigmoid Function or Logistic Function,布布扣,bubuko.com

Dynamics CRM 2015/2016 Web API:Unbound Function 和 Bound Function

今天我们来看看Dynamics CRM Web API Function 吧, 这是一个新概念,刚接触的时候我也是比较的迷糊,这样的命名确实是和之前的那套基于SOAP协议的API完全联系不上.好了,不说闲话了.这里的Function呢,就我来看,更像是一些被封装好的原生函数和老API中的Request差不多的意思,只是API的架构方式变了,所以名称也就跟着变了. 我们之前要查看当前登录用户的信息,需要调用WhoAmIRequest,那现在呢?我们需要调用WhoAmI Function. 这里的F

function对象使用使用详解

模板类function是一个通用的多态函数包装器,它的实例可以存储.拷贝并调用任何可调用对象- 函数.lambda表达式.bind表达式等其他函数对象.还可以是成员函数指针或数据成员的指针. 对空的function实例调用将会抛出std::bad_function_call异常. #include <iostream> #include <functional> int main() { std::function<int()> f = nullptr; try { f