1、卡片式布局
- Ext.onReady(function() {
- var panel = new Ext.Panel({
- title : 'CardLayout',
- width : 400,
- height : 400,
- frame : true,
- applyTo : 'container',
- autoScroll : true,
- collapsible : true,
- defaults : {
- bodyStyle : 'background-color:#FFFFFF;padding:15px'
- },
- layout : 'card',
- activeItem : 0,
- items : [ {
- title : 'one',
- html : '123',
- id : 'p1'
- }, {
- title : 'Two',
- html : '234',
- id : 'p2'
- }, {
- title : 'Three',
- html : '255',
- id : 'p3'
- } ],
- buttons : [ {
- text : '上一页',
- handler : ChangePage
- }, {
- text : '下一页',
- handler : ChangePage
- } ]
- })
- function ChangePage(btn) {
- var index = Number(panel.layout.activeItem.id.substring(1));
- if (btn.text == '上一页') {
- index--;
- if (index < 1)
- index = 1;
- } else {
- index++;
- if (index > 3)
- index = 3;
- }
- panel.layout.setActiveItem('p' + index);
- }
- })
2、点击即选中
- var panel = new Ext.Panel({
- width : 400,
- height : 100,
- frame:true,
- defaults : {
- xtype : 'textfield',
- width : 140,
- selectOnFocus : true,
- },
- layout : 'form',
- items : [ {
- fieldLabel : '开始时间',
- name : 'startTime',
- value : new Date().dateFormat('Y-m-d H:i:s')
- }, {
- fieldLabel : '结束时间',
- name : 'endTime',
- value : new Date().dateFormat('Y-m-d H:i:s')
- }, {
- fieldLabel : 'IP',
- name : 'searchIp'
- } ]
- });
3、获取textfield的内容:Ext.getCmp("name1").getValue();
id : 'name1',增加事件处理
- handler : function() {
- var content = Ext.getCmp("name1").getValue(); //取值
- if (content == "") {
- alert("内容不能为空!");
- // return false;
- }
- Ext.getCmp("name2").setValue(content); //设值
- }
(1) fs.form.findField(id/name).setValue(value);
(2) Ext.get(id/name).setValue(value);
(3) Ext.getCmp(id).setValue(value);
获取form里面的field的三种方法
1)Ext.getCmp('id');
2)FormPanel.getForm().findField('id/name');
3)Ext.get('id/name');//前提是FormPanel在界面上显示出来了
4、时间监听器
- Children = Ext.extend(Ext.util.Observable, {
- constructor: function(){
- this.state = "hungry";//或full
- this.setMilk = function(milk) {
- this.fireEvent('hungry',milk);//调用
- },
- this.addEvents({'hungry':true}),//申明
- this.addListener('hungry',function(milk){
- if(this.state == 'hungry'){
- this.drink(milk);
- }else{
- alert("i am not hungry!");
- }
- }),//注册
- this.drink = function(milk) {
- alert("drink one bottle of milk: " + milk);
- };
- }
- });
- var children = new Children();
- children.setMilk('san lu milk!');
5、panel中button的放置位置
buttonAlign : 'center',
6、为按钮增加事件
- var btn = new Ext.Button({text:'点击'});
- var i = 0;
- btn.on("click", function() {
- var win = new Ext.Window({title:'title'+ i++,width:200, height:100});
- win.show();
- });
7、为html页面中的text文本赋值
- Ext.get('b1').on("click",function() {
- Ext.Ajax.request({
- url : 'hello.jsp',
- method : 'post',
- params : {
- id : '01'
- },
- timeout : 3000,
- success : function(response, opts) {
- var time = response.responseText;
- Ext.getDom('hello2').value = time;
- },
- failure : function(response, opts) {
- alert(response.responseText);
- }
- });
- });
8、类的定义
Extjs 3 中是这样定义类的:
- MyApp.LoginWindow = Ext.extend(Ext.Window, {
- title: 'Log in',
- initComponent: function() {
- Ext.apply(this, {
- items: [
- {
- xtype: 'textfield',
- name : 'username',
- fieldLabel: 'Username'
- },
- ...
- ]
- });
- MyApp.LoginWindow.superclass.initComponent.apply(this, arguments);
- }
- });
Extjs4 中改成:
- Ext.define('MyApp.LoginWindow', {
- extend: 'Ext.Window',
- title: 'Log in',
- initComponent: function() {
- Ext.apply(this, {
- items: [
- //as above
- ]
- });
- MyApp.LoginWindow.superclass.initComponent.apply(this, arguments);
- }
- });
这样做有两个好处:
- 不会出现忘记定出 MyApp namespace 的情况
- 如果 Ext.Window 的定义位置比 MyApp.LoginWindow 晚,使用 4 的方式可以延时定义 LoginWindow 知道找到了 Ext.Window 的定义
9、创建对象
extjs 3.x: new MyApp.LoginWindow();
extjs 4.x: Ext.create("MyApp.LoginWindow",{...})
10、定义和使用命名空间
定义:Ext.namespace('Ext.exampledata');
- Ext.namespace('Ext.exampledata');
- Ext.exampledata.states = [
- ['AL', 'Alabama', 'The Heart of Dixie'],
- ['AK', 'Alaska', 'The Land of the Midnight Sun'],
- ['AZ', 'Arizona', 'The Grand Canyon State'],
- ['AR', 'Arkansas', 'The Natural State']
- ];
使用命名空间下定义的类
- var store = new Ext.data.ArrayStore({
- fields: ['abbr', 'state', 'nick'],
- data : Ext.exampledata.states
- });
使用combobox获取内容:
- var combo = new Ext.form.ComboBox({
- store: store,
- displayField:'state',
- typeAhead: true,
- mode: 'local',
- forceSelection: true,
- triggerAction: 'all',
- emptyText:'Select a state...',
- selectOnFocus:true,
- });
【注意】获取内容:store,获取其中某个字段:displayField
11、ext3中的store用法
- var store2 = new Ext.data.ArrayStore({
- fields : ['id', 'text'],
- data : [['1', '一月'], ['2', '二月'], ['3', '三月'], ['4', '四月'],
- ['5', '五月'], ['6', '六月'], ['7', '七月'], ['8', '八月'],
- ['9', '九月'], ['10', '十月'], ['11', '十一月'], ['12', '十二月']]
- });
- var combo2 = new Ext.form.ComboBox({
- store: store2,
- displayField:'text',
- typeAhead: true,
- mode: 'local',
- forceSelection: true,
- triggerAction: 'all',
- emptyText:'Select a state...',
- selectOnFocus:true,
- });
12、combo中的自动补全
typeAhead : true,
默认值: value : 1,其中value值为valueField的值,而不是displayField
13、查看回调函数中传递的参数
console.dir(arguments);
14、回调函数
- listeners : {
- render : rend
- }
步骤1:添加listeners
步骤2:在相应类中查找回调event,例如:render
步骤3:写自己的处理函数,即回调中要完成的事情,例如rend方法
- function rend(btn) {
- Ext.Msg.alert(btn.title, btn.title + " is rendered!");
- }
完整例子如下:
- Ext.onReady(function() {
- function rend(btn) {
- Ext.Msg.alert(btn.title, btn.title + " is rendered!");
- }
- var tabs = new Ext.TabPanel({
- renderTo : 'my-tabs',
- activeTab : 1,
- items : [ {
- xtype : 'panel',
- title : 'Tab 1',
- html : 'tab1 content..........',
- listeners : {
- render : rend
- }
- }, {
- xtype : 'panel',
- title : 'Tab 2',
- html : 'tab2 content...&&&&&&&.......',
- listeners : {
- render : rend
- }
- }, {
- xtype : 'panel',
- title : 'Tab 3',
- autoLoad : "news.html",
- listeners : {
- render : rend
- }
- } ]
- });
- new Ext.Viewport({
- layout : 'fit',
- items : tabs
- });
- });
15、handler
- xtype : 'button',
- text : 'add tab',
- handler : function() {
- tabs.add({
- title : 'new table'
- });
- }
16、grid panel
- Ext.onReady(function() {
- var data = [ [ 1, 'EasyJWeb', 'EasyJF', 'www.easyjf.com' ],
- [ 2, 'jfox', 'huihoo', 'www.huihoo.org' ],
- [ 3, 'jdon', 'jdon', 'www.jdon.com' ],
- [ 4, 'springside', 'springside', 'www.springside.org.cn' ] ];
- var store = new Ext.data.SimpleStore({
- data : data,
- fields : [ "id", "name", "organization", "homepage" ]
- });
- var grid = new Ext.grid.GridPanel({
- renderTo : "hello",
- title : "中国Java 开源产品及团队",
- height : 150,
- width : 600,
- columns : [ {
- header : "项目名称",
- dataIndex : "name"
- }, {
- header : "开发团队",
- dataIndex : "organization"
- }, {
- header : "网址",
- dataIndex : "homepage"
- } ],
- store : store,
- autoExpandColumn : 2
- });
- });
17、表单的提交
- function simpleForm() {
- var panel = new Ext.form.FormPanel({
- title : 'user basic info',
- width : 400,
- height : 200,
- frame : true,
- labelAlign : 'left',
- labelWidth : 80,
- items : [ {
- xtype : 'textfield',
- fieldLabel : 'username',
- name : 'username',
- id : 'user',
- value : 'abc'
- }, {
- xtype : 'textfield',
- fieldLabel : 'password',
- inputType : 'password',
- name : 'password',
- value : 'hello1234'
- }, {
- xtype : 'datefield',
- fieldLabel : 'birthday',
- name : 'birthday',
- value : new Date().format('Y-m-d')
- }, {
- xtype : 'textfield',
- fieldLabel : 'email',
- name : 'email',
- value : 'abc@sina.com'
- }, {
- xtype : 'textarea',
- fieldLabel : 'description',
- name : 'description',
- value : 'hello world'
- } ],
- buttons : [ {
- text : 'save',
- handler : function() {
- panel.getForm().submit({
- url : 'UserServlet',
- params : {
- k1 : 'v1'
- },
- success : function(form, action) {
- Ext.Msg.alert('Success', "it is ok now");
- },
- });
- }
- }, {
- text : 'cancel',
- handler : function() {
- panel.hide();
- }
- }, {
- text : 'reset',
- handler : function() {
- //findField必须去id的,而不是name
- alert(panel.getForm().findField("user").getValue());
- panel.getForm().reset();
- }
- }, {
- text : 'load',
- handler : function() {
- panel.getForm().load({
- url : 'LoadDataServlet',
- params : {
- k1 : 'v1'
- }
- //待完善
- });
- }
- } ]
- });
- panel.render(document.body);
- }
- Ext.onReady(simpleForm);
18、直接渲染到dom节点(document.body),而未定义div
- var panel = new Ext.Panel({
- width : 400,
- height : 300,
- title : 'my title'
- });
- panel.render(document.body);
19、面板的五大部分
- var panel = new Ext.Panel({
- width : 400,
- height : 300,
- title : 'my title',
- tbar:[{text:'save'},'-',{text:'edit'}],
- bbar:[{text:'next page'},'->',{text:'up page'}],
- buttonAlign:'center',
- buttons:[{text:'确定'},{text:'取消'}],
- html : '<h1>这是面板的body部分</h1>'
- });
- panel.render(document.body);
20、为验证添加自定义提示
步骤1:必须先添加上如下内容,功能在于:初始化tips和让提示出现在右侧,默认会跟着鼠标一起动
Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget = 'side';
步骤2:
- allowBlank : false,
- blankText:'姓名不能为空'
为空时,最终提示的内容会出现在右边,显示blankText的内容
21、ip地址验证
- allowBlank : false,
- blankText:"IP不能为空",
- regex: /^(([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5])))\.)((d|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5])))\.){2}([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5])))$/
22、Object和String转换
将Object转换为JSON(即String):Ext.util.JSON.encode( Mixed o)
将JSON转换为Object(即对象):Ext.util.JSON.decode(String json)
将record转换为对象: record.data
- var blackListRecords = [];
- Ext.each(selectedRecords, function(record) {
- //versions.push(record.get('version'));
- //appId = record.get('appId');
- blackListRecords.push(Ext.util.JSON.encode(record.data));
- })
- Ext.Ajax.request({
- url : '../../blackList/deleteBlackLists.do',
- params : {
- records : blackListRecords
- },
- success : function() {
- Ext.MessageBox.alert('成功', '删除成功!');
- }
- });
本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/821649,如需转载请自行联系原作者