EXTJS 4.2 资料 Grid嵌套
如图:
var ParentContCateId = 0;
var start = 0;
var limit = 20;
DistributionPointForm = function () {
Ext.define('Warehouse', {
extend: 'Ext.data.Model',
fields: [
{ name: 'StoreId' },
{ name: 'StoreCode' },
{ name: 'StoreName', type: 'string' },
{ name: 'Address', type: 'string' },
{ name: 'PostCode', type: 'string' },
{ name: 'AreaId', type: 'string' },
{ name: 'ManufacturerId', type: 'string' },
{ name: 'ManagerMethod', type: 'string' },
{ name: 'Contactor', type: 'string' },
{ name: 'ContactInfo', type: 'string' },
{ name: 'City', type: 'string' },
//{ name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia' }, ]
});
var mainStore = Ext.create('Ext.data.Store', {
model: 'Warehouse',//这个地方user不是一个对象,而是一个类
pageSize: limit, //页容量20条数据
//是否在服务端排序 (true的话,在客户端就不能排序)
remoteSort: false,
remoteFilter: true,
method: 'POST',
proxy: {//代理
type: 'ajax',
url: '/UI/HttpHandlerData/StoreManagement/DistributionPoint.ashx?operation=SearchInfoWarehouse',
extraParams: {
start: start,
limit: limit
},
reader: {
type: 'json', //返回数据类型为json格式
root: 'Table', //根节点
totalProperty: 'result' //数据总条数
}
},
sorters: [{
//排序字段。
property: 'StoreId',
//排序类型,默认为 ASC
direction: 'desc'
}],
autoLoad: true //即时加载数据
}); function displayInnerGrid(renderId) {
//Model for the inside grid store
Ext.define('DistributionPoint', {
extend: 'Ext.data.Model',
fields: [
{ name: 'DPId' },
{ name: 'CompanyId' },
{ name: 'CompanyName' },
{ name: 'StoreId' },
{ name: 'DPCode' },
{ name: 'DPName' },
{ name: 'LocationId' },
{ name: 'LocationName' },
{ name: 'Leadtime' },
{ name: 'CompanyTypeName' },
{ name: 'CompanyTypeId' }
]
}); var insideGridStore = Ext.create('Ext.data.Store', {
model: 'DistributionPoint',//这个地方DistributionPoint不是一个对象,而是一个类
pageSize: limit, //页容量20条数据
remoteSort: false,
remoteFilter: true,
method: 'POST',
proxy: {//代理
type: 'ajax',
url: '/UI/HttpHandlerData/StoreManagement/DistributionPoint.ashx?operation=SearchInfoDistributionPoint',
extraParams: {
start: start,
limit: limit,
StoreId: renderId //传入StoreId进行过滤
},
reader: {
type: 'json', //返回数据类型为json格式
root: 'Table', //根节点
totalProperty: 'result' //数据总条数
}
},
groupField: 'CompanyTypeName', //确定哪一项分组
sorters: [{
//排序字段。
property: 'DPId',
//排序类型,默认为 ASC
direction: 'ASC'
}],
autoLoad: true //即时加载数据
}); innerGrid = Ext.create('Ext.grid.Panel', {
title: '门店信息列表',
store: insideGridStore,
forceFit: true,//填充grid宽度
selModel: {
selType: 'cellmodel'
},
columns: [
{ header: "DPId", dataIndex: 'DPId', width: 100, hidden: true },
{ header: "StoreId", dataIndex: 'StoreId', width: 200, hidden: true },
{ header: "门店编码", dataIndex: 'DPCode', width: 100 },
{ header: "门店名称", dataIndex: 'DPName', width: 200 },
{ header: "所在地区", dataIndex: 'LocationName', width: 200 },
{ header: "交付周期", dataIndex: 'Leadtime', width: 100 },
{ header: "厂商名称", dataIndex: 'CompanyName', width: 200 },
{ header: "厂商类型", dataIndex: 'CompanyTypeId', width: 100 },
{ header: "门店类型", dataIndex: 'CompanyTypeName', width: 100 },
{
header: '操作', align: 'left', width: 100, renderer:
function (v, nv, v1) {
var Update = "<img src='/Resources/Images/16x16/blue16_020.gif'></img>" + '<a href="#" onClick="FunctionActionUpdate()">修改</a>';
var Delete = "<img src='/Resources/Images/16x16/blue16_013.gif'></img>" + '<a href="#" onClick="FunctionActionDelete()">删除</a>';
return Update + ' ' + Delete;
}
}
],
columnLines: true,
autoWidth: true,
autoHeight: true,
frame: false,
iconCls: 'icon-grid',
features: [{ ftype: 'grouping' }],
renderTo: renderId,
tbar: [
"->", {
xtype: 'button', icon: '/Resources/Images/16x16/blue16_002.gif', text: "添加",
handler: function () {
win.show();
win.setTitle('添加');
}
}]
}); innerGrid.getEl().swallowEvent([
'mousedown', 'mouseup', 'click',
'contextmenu', 'mouseover', 'mouseout',
'dblclick', 'mousemove'
]);
}
function destroyInnerGrid(record) {
var parent = document.getElementById(record.get('StoreId'));
var child = parent.firstChild;
while (child) {
child.parentNode.removeChild(child);
child = child.nextSibling;
}
}
Ext.define('MainGrid', {
extend: 'Ext.grid.Panel',
alias: 'widget.MainGrid',
store: mainStore,
forceFit: true,//填充grid宽度
stripeRows: true,
columns: [
{ header: "仓库id", dataIndex: 'StoreId', width: 200, hidden: true },
{ header: '序号', xtype: 'rownumberer', align: 'left', width: 100 },
{ header: "仓库编码", dataIndex: 'StoreCode', width: 200 },
{ header: "仓库名称", dataIndex: 'StoreName', width: 200 },
{ header: "所在城市", dataIndex: 'City', width: 200 },
],
autoWidth: true,
autoHeight: true,
selModel: {
selType: 'cellmodel'
},
plugins: [{
ptype: 'rowexpander',
rowBodyTpl: [
'<div id="{StoreId}">',
'</div>'
]
}],
collapsible: true,
animCollapse: false,
title: '仓库信息列表',
iconCls: 'icon-grid',
initComponent: function () {
var me = this;
this.callParent(arguments);
}
}); var mainGrid = new Ext.create('MainGrid'); mainGrid.view.on('expandBody', function (rowNode, record, expandRow, eOpts) {
displayInnerGrid(record.get('StoreId'));
}); mainGrid.view.on('collapsebody', function (rowNode, record, expandRow, eOpts) {
destroyInnerGrid(record);
}); mainGrid.setHeight(window.innerHeight);
mainGrid.setWidth(window.innerWidth);
Ext.EventManager.onWindowResize(function () {
mainGrid.setHeight(window.innerHeight);
mainGrid.setWidth(window.innerWidth);
}); //**************页面主体开始*****************
var tabpanel = Ext.createWidget('tabpanel', {
activeTab: 0, //指定默认的活动tab
height: '100%',
width: '100%',
minTabWidth: 115,
tabWidth: 135,
plain: true, //True表示tab候选栏上没有背景图片(默认为false)
enableTabScroll: true, //选项卡过多时,允许滚动
defaults: { autoScroll: true },
items: [{
id: "tab1",
title: '配送点设置',
icon: '/Resources/Images/16x16_Classic/20101204100142490_easyicon_cn_16.png',
items: mainGrid,
closable: true //这个tab可以被关闭
}, {
id: "tab2",
title: '配送点详情',
icon: '/Resources/Images/16x16_Classic/20101204100142490_easyicon_cn_16.png',
html: "这只是一个非常普通的Tab。",
items: [{ xtype: 'button', text: '按钮' }],
closable: true //这个tab可以被关闭
}]
});
//**************页面主体结束*****************
var panel = new Ext.Viewport({
border: false,
layout: 'border',
items: [
{
region: 'center',
border: false,
layout: 'fit',
items: tabpanel
}]
});
}
html:
<body>
<div>
<script type="text/javascript">
Ext.onReady(function () {
Ext.QuickTips.init();
DistributionPointForm();
});
</script>
</div>
</body>
EXTJS 4.2 资料 Grid嵌套的更多相关文章
- EXTJS 4.2 资料 控件之Grid 行编辑绑定下拉框,并点一次触发一次事件
主要代码: { header: '属性值', dataIndex: 'PropertyValueName', width: 130, editor: new Ext.form.field.ComboB ...
- EXTJS 4.2 资料 控件之Grid 添加行,编辑行,删除行
//SiteVariableConfigValue类,创立一个模型类 Ext.define("SiteVariableConfigValue", { extend: "E ...
- EXTJS 4.2 资料 控件之Grid Columns 列renderer 绑定事件
columns: [ { header: '序号', xtype: 'rownumberer', align: 'center', width: 100 }, { header: 'CompanyId ...
- EXTJS 4.2 资料 控件之Grid 那些事
最近在学习Extjs4.2 ,积累文章,看得不错,再此留年: //表格数据最起码有列.数据.转换原始数据这3项 Ext.onReady(function(){ //定义列 var columns = ...
- EXTJS 4.2 资料 控件之Grid 列鼠标悬停提示
columns: [ { header: }, { header: }, { header: , renderer: function (v, ctx, record) { ctx.tdAttr = ...
- ExtJS扩展:扩展grid
ExtJs的grid功能很强大,但是有时候觉得总是少那么一点点功能,我们就来扩展它,让它用起来更方便. 今天我们要扩展的是:根据记录的选择数量来禁用或启用grid toolbar上的某些按钮. 本文所 ...
- extjs动态树 动态grid 动态列
由于项目需要做一个动态的extjs树.列等等,简而言之,就是一个都是动态的加载功能, 自己琢磨了半天,查各种资料,弄了将近两个星期,终于做出来了 首先,想看表结构,我的这个功能需要主从两张表来支持 代 ...
- extjs学习(关于grid)
1.想要调整某一列在表格中的顺序,可以使用mapping(索引是从0开始的) var store = new Ext.data.ArrayStore({ data:data, fields:[ {na ...
- EXTJS 4.2 资料 控件之radiogroup 的用法
最近在EXTJS4.2开发项目,radiogroup的用法,主要是和grid之间的编辑功能:看了好多资料都不对,特此在这里备注记录 代码如下, 1.这是一段Win窗体上的两个单选按钮,设置单选按钮都是 ...
随机推荐
- Quartz Scheduler(2.2.1) - Usage of Calendars
Quartz Calendar objects (not java.util.Calendar objects) can be associated with triggers at the time ...
- ASP.NET整理
Asp.net六大对象 1.Request-->读取客户端在Web请求期间发送的值 常用方法: 1.Request.UrlReferrer请求的来源,可以根据这个判断从百度搜的哪个关键词.防 ...
- AndroidStudio KeyMap
- javascript对象初读
<script type="text/javascript"> function baseClass() { this.showMsg = function() { a ...
- ArcMap 10.2 crashes during Loading Document launch stage
问题描述: ArcMap unexpectedly exits during the "Loading Document..." stage on startup. No erro ...
- 资源汇集:nginx教程从入门到精通
http://linux.cn/article-4279-1.html
- ios开发:OC对象的内存分析
最近要开始准备找实习单位了,做做笔试题,看看各位大神的面试经历,发现自己要学习的东西真的还有很多,虽然也做过几个的项目,但是真正拿过笔试题一看,才发现自己对基础这方面的东西,确实有点忽视了,所以最近开 ...
- 谈谈css中的before和after
css中的伪元素before和after,其实有很多小的妙用. 一.基础用法 w3c中的基础用法:用来给元素的内容前面(对应:before)或者后面(对应:after)插入新内容. <p> ...
- javascript笔记---貌似大叔
1.原型式继承和类式继承的区别 在基于类的面向对象方式中,对象(object)依靠类(class)来产生.而在基于原型的面向对象方式中,对象(object)则是依靠 构造器(constructor)利 ...
- CSS笔记——padding,margin为百分比计算时的参照对象
div的padding为百分比的两种情况 padding-top,padding-bottom,margin-top,margin-bottom是百分比时是按照当前元素的父级元素的宽度来计算的 1. ...