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窗体上的两个单选按钮,设置单选按钮都是 ...
随机推荐
- oracle 排序
1.ORDER BY 中关于NULL的处理 缺省处理,Oracle在Order by 时认为null是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前. 当然,你也可以使用nulls f ...
- VIJOS P1540 月亮之眼
[题目大意] 有多个珠子,给出部分珠子之间的相对上下位置和间距,问你这些珠子在满足给出的条件下,是否能把珠子排列在一条竖直直线上,如果能,求出每个珠子距离最高的珠子的距离,珠子的位置可重叠. [分析] ...
- [需再总结]SSH整合代码生成器
package cn.itcast.invoice.util.generator; import java.io.BufferedWriter; import java.io.File; import ...
- hdu 4585 set应用
#include<iostream> #include<algorithm> #include<cstring> #include<cstdio> #i ...
- 屏蔽cBox广告的方法 无需安装软件
在hosts文件中加入两句代码: 127.0.0.1 games.cntv.cn 127.0.0.1 d.cntv.cn
- Windwos下Apache的缓存设置
1.打开httpd.conf,找到以下几个Module并将其启用(如果没有,可以自行添加) mod_proxy.so(module_proxy) m ...
- ASP、JSP、PHP 三种技术比较
目前,最常用的三种动态网页语言有ASP(Active Server Pages),JSP(JavaServer Pages),PHP (Hypertext Preprocessor). 简 介 : A ...
- Java I/O第二篇 之 (缓冲流 随机流 数组流 数据流)
1:缓冲流 BufferedReader BufferedWriter 具有较强的读写能力,能单独读写一行数据,能够减少对硬盘的访问次数. /** * 缓冲流 能够增强对问价数据的可读性,减少访问读 ...
- 【转】Android开发中Handler的使用
在Android开发中,我们经常会遇到这样一种情况:在UI界面上进行某项操作后要执行一段很耗时的代码,比如我们在界面上点击了一个”下载“按钮,那么我们需要执行网络请求,这是一个耗时操作,因为不知道什么 ...
- js,css 和 html 分离,见仁见智
信经常观察大站的朋友都会发现,他们都把CSS写在HMTL页面里,一个页面的或者多个页面的背景图片,都集成到一张图片里,他们有的JS文件,也写到页面里了……也许你会迷惑,现在到处讲页面的优化,不都是要把 ...