论坛首页 AJAX版 EXT

继承的GRID里面的取值问题

浏览 772 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2008-04-10 关键字: ext editorgridpanel record
我自己写的一个继承GRID 组件

MyEditGridv.js文件
MyEditGrid=function(){
	/*配置store*/
	var store=new Ext.data.Store({
		proxy:new Ext.data.HttpProxy({url:'gridAction.do'}),
			reader: new Ext.data.JsonReader({
            totalProperty: 'totalProperty',
            root: 'root'
        },
		[
            {name: 'id'},
            {name: 'name'},
            {name: 'sex'},
            {name: 'email'},
            {name:"bornDate",type:"date",dateFormat:"Y-n-j"}
        ])
	}); 
	var sm = new Ext.grid.CheckboxSelectionModel();
	/*配置列模型*/
	var colM=new Ext.grid.ColumnModel([
	
		sm,
		{
			header:"姓名",
			dataIndex:"name",
			sortable:true,
			editor:new Ext.form.TextField()}, 

		{	header:"性别",
			dataIndex:"sex",
			editor:new Ext.form.ComboBox({transform:"sexList",
			triggerAction: 'all',
			lazyRender:true})
		},

		{	header:"出生日期",
			dataIndex:"bornDate",
			width:120,
			autoWidth:true,
			renderer:Ext.util.Format.dateRenderer('Y年m月d日'),
			editor:new Ext.form.DateField({format:'Y年m月d日'})},

		{	header:"电子邮件",
			dataIndex:"email",
			sortable:true,
			editor:new Ext.form.TextField()}
		]);
		
		/*重载构造器*/
		MyEditGrid.superclass.constructor.call(this, {
        	
        	title:"学生基本信息管理",
			///height:200,
			///width:600, 
			closable:true,
			///store:store,
			ds:store,
			loadMask:true,
			autoHeight:true,
			autoWidth:true,
			cm:colM,
			sm:sm,
			selModel: new Ext.grid.RowSelectionModel({singleSelect:true}),//设置单行选中模式, 否则将无法删除数据 
			autoExpandColumn:3,
			tbar:[{
            		text: '添加用户',
            		//iconCls:'add',//按钮图标的CSS名称
            		handler : function(){// 点击按钮执行的操作
                		//var n = MyEditGrid.getStore().getCount();// 获得总行数
                
                		/*可以替换为弹出一个新建对象的窗口,然后保存数据*/
                		Ext.Msg.alert('查看选中', "您现在选中的用户其名字为:");
                		//this.stopEditing();// 停止编辑
                		//store.insert(n, p);// 插入到最后一行
                		//this.startEditing(n, 1);// 开始编辑1单元格
                }},
                {text:'xinjian',
                 handler:addNewUser}],
            clicksToEdit:1,		/*默认值是2,即双击才可编辑,等于1的时候,点击一次就可以编辑*/

			bbar: new Ext.PagingToolbar({
        			pageSize: 10,
        			store: store,
        			displayInfo: true,
        			displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',
        			emptyMsg: "你好"
    				})
    	});
    	/*添加监听器*/
    	///this.addListener({
    	///	'close':{
		///		fn: function(panel){
		///			///console.log('Grid listener fired (close), arguments:',arguments);
		///			panel.hide();
		///			}
		///			,scope:this
		///		}
    	///});
    	store.load({params:{start:0,limit:10}});
    	
    	
    	function addNewUser(){
		var form = new Ext.form.FormPanel({
        	baseCls: 'x-plain',
        	labelWidth: 55,
        	url:'save.do',
        	defaultType: 'textfield',
        	monitorValid:true,

        	items: [{
            	fieldLabel: 'Name',
            	name: 'userName',
            	anchor:'100%'  // anchor width by percentage
       	 	},{
            	fieldLabel: 'Password',
            	name: 'userPass',
            	anchor: '100%'  // anchor width by percentage
        	},{
            	fieldLabel: 'Password',
            	name: 'userPass',
            	anchor: '100%'  // anchor width by percentage
        	}, {
            	xtype: 'textarea',
            	hideLabel: true,
            	name: 'msg',
            	anchor: '100% -53'  // anchor width by percentage and height by raw adjustment
        	}],
        	
        	buttons:[{ 
                text:'保存',
                formBind: true,	 
                // Function that fires when user clicks the button 
                handler:function(){ 
                    form.getForm().submit({ 
                        method:'POST', 
                        waitTitle:'Connecting', 
                        waitMsg:'Sending data...',		/*wait messagebox*/
 
                        success:function(){ 
                        	
			        			Ext.Msg.alert('Status', 'Save Successful!', function(btn, text){
				   if (btn == 'ok'){
		                        var redirect = 'mylayout.jsp'; 
		                        window.location = redirect;
                                   }
			        });
                        },
 
                        failure:function(form, action){ 
                            if(action.failureType == 'server'){ 
                                obj = Ext.util.JSON.decode(action.response.responseText); 
                                Ext.Msg.alert('Login Failed!', obj.errors.reason); 
                            }else{ 
                                Ext.Msg.alert('Warning!', 'Authentication server is unreachable : ' + action.response.responseText + "abcd"); 
                            } 
                            form.getForm().reset(); 
                        } 
                    }); 
                } 
            },
            {text:'取消'}] 
    })
    

	/*定义一个窗口*/
    var window = new Ext.Window({
        title: '晕死,不知道写什么',
        width: 500,
        height:300,
        minWidth: 300,
        minHeight: 200,
        layout: 'fit',
        plain:true,
        bodyStyle:'padding:5px;',
        buttonAlign:'center',
        items: [form]

        ///buttons: [{
        ///    text: 'Send'
        ///},{
       ///     text: 'Cancel'
       /// }]
    });

    window.show();
    };
};

Ext.extend(MyEditGrid,Ext.grid.EditorGridPanel);



现在我的 var grids = new MyEditGrid();是放在别的页面
但是我在GRID上加了个按钮,点击的时候获得选择的记录,handler : function(){// 点击按钮执行的操作
//var n = MyEditGrid.getStore().getCount();// 获得总行数
这里,我通过什么来得到记录呢?这里没有grids对象哦
   
时间:2008-04-10
参考一下官方示例FEED-Viewer,应该会有收获
   
0 请登录后投票
时间:2008-04-11
fyshi 写道
参考一下官方示例FEED-Viewer,应该会有收获


官方自带的那个grid好像没有带topbar的啊
   
0 请登录后投票
时间:2008-04-11
这个问题搞定了,给加个id属性
然后var record = Ext.get('id的属性').getSelect……

可还有一个问题呢,现在关掉含有grid的那个tab页,再点击打开的时候,怎么有出现空白呢?tab页会打开,但是里面没有内容哦
   
0 请登录后投票
时间:2008-05-15
laitaogood 写道

可还有一个问题呢,现在关掉含有grid的那个tab页,再点击打开的时候,怎么有出现空白呢?tab页会打开,但是里面没有内容哦


关掉tab页的时候,方法使用tabpanel.destroy(),销毁面板,再加载就会出现grid里面的内容了
   
0 请登录后投票
论坛首页 AJAX版 EXT

跳转论坛:
JavaEye推荐