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窗体上的两个单选按钮,设置单选按钮都是 ...
随机推荐
- 【概率】Uva 10900 - So you want to be a 2n-aire?
写完这题赶紧开新题... 话说这题让我重新翻了概率论课本,果然突击完了接着还给老师了,毫无卵用. 很多人拿这位大神的题解作引,在这我也分享给大家~ 对于其中的公式在这里做一点简要的说明.因为自己也是理 ...
- hdu 4421 2-SAT问题
思路:我们需要判断是否有满足的a[n],其实也就是对每一个二进制位进行判断,看是否有满足的.那么我们每次取出一个二进制位,这样每一位只有0,1两种状态,就成了比较典型的2-SAT问题了. #inclu ...
- poj 3678 2-SAT问题
思路:将每个点拆分为两个点 a与a' ,a表示为1,a'表示为0.那么条件给的每个边自然就会存在矛盾,然后根据2-SAT建边就行了. #include<iostream> #include ...
- codevs4373 窗口==poj2823 Sliding Window
Sliding Window Time Limit: 12000MS Memory Limit: 65536K Total Submissions: 53676 Accepted: 15399 ...
- 蓝牙 CoreBluetooth
baseK(相关基础知识)蓝牙常见名称和缩写 BLE:(Bluetooth low energy)蓝牙4.0设备因为低耗电,也叫BLEperipheral,central:外设和中心设备,发起链接的是 ...
- DataTables手动带参数提交至服务器
一:参数传递及接收 JavaScript: 黄背景部分为参数传递关键 <script type="text/javascript"> var table; var de ...
- Java Concurrency - java.util.concurrent API Class Diagram
摘自: www.uml-diagrams.org Here we provide several UML class diagrams for the Java™ 7 java.util.concur ...
- Jackson - Date Handling
Handling dates on Java platform is complex business. Jackson tries not to make it any harder than it ...
- SQL_CURSOR_游标循环
) DECLARE My_Cursor CURSOR --定义游标 FOR (SELECT column1 FROM #temp1) --查出需要的集合放到游标中 OPEN My_Cursor; -- ...
- JAVA.IO流学习笔记
一.java.io 的描述 通过数据流.序列化和文件系统提供系统输入和输出.IO流用来处理设备之间的数据传输 二.流 流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数 ...