//mixins类
Ext.define('Canna.mixins.GridUtil', {
onAfterrender : function() {
var me = this;
if (!this.getStore && !this.getStore()) {
return;
}
this.showLoadingMark();
this.getStore().load({
callback : function() {
me.hideLoadingMark();
}
});
},
onSelectionchange : function(sm, selections) {
this.view.panel.down('#removeButton').setDisabled(
selections.length == 0);
},
onAddHandler : function() {
var panel = this.up('gridpanel');
var store = panel.getStore();
if (store.storeId == 'ext-empty-store') {
store = Ext.create('Ext.data.Store', {
model : 'Ext.data.Model',
fields : [],
proxy : 'memory'
});
panel.bindStore(store);
}
var model = store.model;
var r = Ext.create(model, {});
panel.getStore().insert(0, r);
if (panel.rowEditingAble) {
var rowEditing = panel.getEditPlugin();
rowEditing.cancelEdit();
rowEditing.startEdit(0, 0);
}
},
onDeleteHandler : function() {
var grid = this.up('gridpanel');
var records = grid.getSelectionModel().getSelection();
Ext.MessageBox.confirm('Confirm', '请确定删除!', function(buttonId) {
if (buttonId == 'yes') {
grid.getStore().remove(records);
}
});
},
showLoadingMark : function() {
this.loadingMark = this.loadingMark || new Ext.LoadMask(this, {
msg : 'loading...'
});
this.loadingMark.show();
},
hideLoadingMark : function() {
this.loadingMark.hide();
},
getEditPlugin : function() {
return this.getPlugin(this._pluginId);
},
addRowEditPlugin : function() {
var me = this;
me._pluginId = 'rowEditing' + Math.random();
var rowEditing = Ext.create('Ext.grid.plugin.RowEditing', {
clicksToEdit : 2,
autoCancel : true,
pluginId : me._pluginId
});
me.plugins = [ rowEditing ];
}
});
//extend 类
Ext.define('Canna.view.BaseGridPanel', {
extend : 'Ext.grid.Panel',
alias : 'widget.baseGridPanel',
mixins : [ 'Canna.mixins.GridUtil' ],
initComponent : function() {
// rowEditingAble
// checkboxModelAble
// simpleDockAble
// autoLoadStore
var me = this;
if (this.rowEditingAble) {
this.addRowEditPlugin();
}
if (this.autoLoadStore) {
this.addListener('afterrender', me.onAfterrender);
}
if (this.checkboxModelAble) {
this.selModel = Ext.create('Ext.selection.CheckboxModel', {
listeners : {
selectionchange : me.onSelectionchange
}
});
}
if (this.simpleDockAble) {
this.dockedItems = [ {
xtype : 'toolbar',
items : [ {
text : '添加',
iconCls : 'add',
handler : me.onAddHandler
}, '-', {
itemId : 'removeButton',
text : '删除',
iconCls : 'remove',
disabled : true,
handler : me.onDeleteHandler
} ]
} ];
}
this.callParent(arguments);
}
});
使用mixins,或使用extend
相关推荐
在"springMVC mysq 自动封装SQL生成"中,EXT4.0可能被用作前端展示数据的界面,通过AJAX与后端Spring MVC服务进行交互,获取或更新MySQL数据库中的数据。 MySQL是一个开源的关系型数据库管理系统,广泛应用于各种...
这个接口封装了模型实例,提供了额外的方法和属性来适应树控件的特殊状态。例如,你可以改变树的外观,通过设置`useArrows`为`true`来隐藏边线并显示箭头图标来表示展开和折叠。通过设置`rootVisible`为`false`,...
- **视图模型(ViewModel)**:虽然在ExtJS 4.0中不是必须的,但可以用来在视图中封装数据和逻辑,使视图更加独立和可复用。 - **Store和Model的连接**:控制器通常会与Store交互,以加载或保存模型数据。 - **...
在Ext中集成KindEditor4.0正式版是一个常见的前端开发任务,这涉及到两个主要的JavaScript库:ExtJS和KindEditor。ExtJS是一个强大的组件化JavaScript框架,用于构建富客户端应用程序,而KindEditor则是一个功能丰富...
"丛林商城v1.0"是一个基于特定技术栈构建的电商项目,主要采用了Spring、SpringMVC和MyBatis这三大主流Java企业级开发框架,以及前端的EXT4.0库。这个项目的设计目的是为了学习和复习相关技术,提供了一个简易的商城...
而Ext.NET 2.0是基于ASP.NET的控件库,它封装了ExtJS的功能,使得在.NET环境中使用ExtJS变得更加方便。 跨行合并通常涉及到表格中的单元格合并,这在数据展示时可以有效地节省空间,突出显示特定的数据组。在ExtJS ...
3. **封装Ajax**: jQuery对XMLHttpRequest进行了封装,提供了易于使用的API来处理异步请求。 4. **动画效果**: jQuery内置了丰富的动画效果,如淡入淡出、滑动等,简化了创建动态效果的过程。 **Ext JS 4.0框架** ...
5.4.3 封装好的单击事件:ext.util.clickrepeater / 200 5.5 键盘事件 / 201 5.5.1 为元素绑定键盘事件:ext.util.keymap / 201 5.5.2 键盘导航:ext.util.keynav / 204 5.6 综合实例:股票数据的实时更新 / ...
4. **数据传输**:在ExtJS中,通常使用FormData对象来封装表单数据,包括文件。通过设置`Ext.Ajax.request`的`enctype`为`'multipart/form-data'`,并把FormData对象传递给`params`,可以确保文件被正确地发送到...
在EXTJS4.0中,action类是用来定义与服务器的通信模式,包括GET、POST、PUT、DELETE等HTTP方法。这些操作是通过数据模型(Model)和数据代理(Proxy)来实现的,数据代理将客户端的操作转换为适当的HTTP请求,并处理...
通过`Ext.application`方法创建应用程序实例,定义模块化结构,使大型应用的组织更加清晰。 在"EXTJS 4.0 MVC 示例代码"的压缩包中,`WebRoot`目录很可能包含了整个应用程序的文件结构,如HTML页面、JavaScript文件...
`Element.dom`属性可以直接访问底层的DOM节点,而`Ext.get`返回的是一个封装了DOM节点的Element对象。如果需要根据选择器获取多个元素或有特定特征的元素,可以使用选择器,如获取页面上所有`<p>`标签。 6. **学习...
网络堆栈处理网络数据的传输,实现数据的封装、路由和解封装。 6. **安全机制**:Android 4.0引入了更严格的安全模型,比如权限管理系统,保护用户数据和系统资源不被恶意软件侵害。内核中的 SELinux(Security-...
- 模型还提供了同步机制,与服务器进行数据交换,例如通过`load`、`save`和`destroy`方法。 2. **View(视图)**: - 视图是用户界面的表示层,它通常由组件(components)组成,如表格、面板、按钮等。 - 在...
通过`Ext.data.Model`类创建模型,可以方便地进行数据操作和同步。 - **Store**:存储模型实例的集合,负责数据的加载、保存和排序等功能。Store可以连接到远程服务器,通过Ajax请求获取数据,也可以使用本地数据源...
- **使用Ext.Ajax**:详细讲解了Extjs提供的Ajax封装方法Ext.Ajax,包括发送请求、处理响应等功能。 - **错误处理和调试技巧**:提供了关于如何处理Ajax请求中的异常情况及如何进行调试的建议。 ### Core包和Ext类 ...
在ExtJS框架中进行文件上传,特别是在非4.0版本的情况下,我们需要手动处理大部分上传逻辑,因为早期版本可能没有提供现成的文件上传组件。在这个过程中,涉及到的主要知识点包括Ajax异步请求、表单数据处理、文件...