extjs4.1 grid 分组 (对象是一个object)以及其它。

来源:互联网 发布:平板电脑 护眼软件 编辑:程序博客网 时间:2024/06/11 13:59

前几天做分组,老是遇到问题,后来经过测试,找到了解决方法。


model中:

Ext.define('Sharera.model.community.Topic', {    extend: 'Ext.data.Model',    idProperty: 'id',    fields: [        {name:'id',type:'long'},{name:'title',type:'string'},        {name:'community.name',type:'string'},        {name:'community.id',type:'long'},        {name:'community',type:'object'},{name:'creator',type:'object'},{name:'participator',type:'object'},{name:'created',type:'string'},{name:'modified',type:'string'},{name:'enabled',type:'boolean'}    ]});

store:

/** * The com.sharera.web.Topic store definition */Ext.define('Sharera.store.community.Topic', {    extend: 'Ext.data.Store',    autoLoad: false,    autoSync: false,    fields: ['id','title','community','creator','participator','created','modified','enabled'],    baseUrl : context+'api/topic',    sorters: {property: 'created', direction: 'DESC'},    groupField: 'community.name',      proxy: {        type: 'rest',        url: context+'api/topic',        model: 'Sharera.model.community.Topic',reader : {type : 'json'},writer : {type : 'json'},listeners : {exception : function(proxy, response, operation) {if (operation) {Ext.Sharera.error("错误",operation.error.statusText);} else {// May be a proxy error...}},load:function(store,records,successFull,o){        store.sort([{property : 'community',direction: 'ASC'}]);        }}    },    setUrlforForm : function(id) {    if(id==undefined || id==null)    this.proxy.url = this.baseUrl;    else    this.proxy.url = this.baseUrl + "/" + id + ".json";},setUrlforQuery : function(name) {if (name == null)name = 'list';this.proxy.url = this.baseUrl + "/" + name + ".json";},setUrlforQuery4Ext : function(name) {if (name == null)name = 'listext';this.proxy.url = this.baseUrl + "/" + name + ".json";}});


grid中的代码:



     //插件添加     features: [{        ftype: 'groupingsummary',        groupHeaderTpl: '<font color=blue>{[values.rows[0].data.community.name]}</font> (共:{rows.length}个话题)',        hideGroupedHeader: true,        enableGroupingMenu: false     }],
               header:'操作',               align: 'center',               xtype:'actioncolumn',                              width:70,               items: [{               iconCls : 'icon-checkin-action',                   tooltip: '查看',                   handler: function(grid, rowIndex, colIndex, item) {                                          var rec = grid.getStore().getAt(rowIndex);  var formWin= Ext.create("Sharera.view.community.Topic.FormDisplay",{bid:rec.data.id});      var formObj=formWin.down('form').getForm();      var panel=formWin.down('panel[ref=discussion]');   var fstore = Ext.create("Sharera.store.community.Topicform");                                              fstore.setUrlforForm(rec.data.id);                  fstore.load(                {                            scope: this,                            callback: function(records, operation, success) {                            formObj.loadRecord(records[0]);                            var parValue=new Array();                            var participators=records[0].data.participator;                                var isUse;                                if(records[0].data.enabled){                                isUse='是';                                }                                if(!records[0].data.enabled){                                    isUse='否';                                                                }                            for(var i=0;i<participators.length;i++){                            parValue.push(participators[i].user.fullname);                            }                            formObj.findField('community').setValue(records[0].data.community.name);                            formObj.findField('creator').setValue(records[0].data.creator.fullname);                            formObj.findField('participator').setValue(parValue.join(','));                            formObj.findField('enabled').setValue(isUse);                                                        var topicId=records[0].data.id;                            Ext.Ajax.request({                                    url:context+'api/discussion/topic/'+topicId+'.json',                                    method:'get',                                    success:function(response, opts){                                             var  discussions=eval('('+response.responseText+')');                                             var checkLength=0;                                             panel.setTitle('讨论管理:(共有'+discussions.length+'条讨论,显示'+discussions.length+'条,已阅'+0+'条)');                                             var containers=new Array();                                             for(var i=0;i<discussions.length;i++){                                                var id=discussions[i].id;                                                   var container=Ext.create('Ext.panel.Panel',{                                                         id:discussions[i].id,                                                         cls: 'window-bord',                                                         width:'95%',                                                         border: 0,                                                         padding:'20',                                                         bodyStyle: 'padding-bottom:15px;background:#eee;',                                                         html: '<p>  '+discussions[i].content+'</p><br>  ' +discussions[i].creator.fullname+'  '+discussions[i].created                                                   });                                                   container.add({                    xtype:'container',                    width:'100%',                    padding:'5',                    layout: {        type: 'hbox',        pack: 'end' ,         align: 'stretchmax'    },   items:[{      xtype:'button',         text:'禁用',         ref:'forbidden',         check:false,                                                         handler: function(b) {         Ext.MessageBox.confirm('请确认', '您确认要禁用该讨论吗?',function(btn){                         if(btn=='yes'){                                    Ext.Ajax.request({                                    headers: {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"},                                    url:context+'api/discussion/check/'+id+'.json',                                    method:'put',                                    success:function(response, opts){                                     b.hide();                                     var useButton=b.ownerCt.down('button[ref=use]');                                     useButton.show();                                     useButton.check=true;                                     if(b.check){                                         useButton.setText('禁用(已阅)');                                     }else{                                      checkLength++;                                     }                                     panel.setTitle('讨论管理:(共有'+discussions.length+'条讨论,显示'+discussions.length+'条,已阅'+checkLength+'条)');                                         panel.removeBodyCls()                                     panel.addBodyCls('background:#196666');                                         Ext.Sharera.msg("成功",'讨论删除成功');                                    },                                        failure:function(response, opts){Ext.Sharera.error("错误",'讨论删除失败');                                        }                                    });                          }                             });     }   },{      xtype:'button',         text:'已禁用',         ref:'use',         check:false,                                                         iconCls : 'icon-cancel-action',                                                         handler: function(b) {         Ext.MessageBox.confirm('请确认', '您确认要启用该讨论吗?',function(btn){                         if(btn=='yes'){                                    Ext.Ajax.request({                                    headers: {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"},                                    url:context+'api/discussion/check/'+id+'.json?type=setusable',                                    method:'put',                                    success:function(response, opts){                                     b.hide();                                     var fb=b.ownerCt.down('button[ref=forbidden]');                                     fb.show();                                     fb.check=true;                                     fb.setText('禁用(已阅)');                                         Ext.Sharera.msg("成功",'讨论启用成功');                                    },                                        failure:function(response, opts){Ext.Sharera.error("错误",'讨论启用失败');                                        }                                    });                          }                             });     },     listeners:{         mouseover:function(view){               view.setIconCls('icon-tick');               view.setText('启用');         },         mouseout:function(view){            if(view.check){             view.setIconCls('icon-cancel-action');                 view.setText('已禁用');            }                        }     }      }],   listeners:{        render: function(view){              var self=view;              var useButton=view.down('button[ref=use]');              useButton.hide();        }   }                  });                                                   containers.push(container);                                             }                                             panel.add(containers);                                    },                                        failure:function(response, opts){Ext.Sharera.error("错误",'话题禁用修改失败'+message);                                        }                                    });                            }                }                  );                   }              },{               iconCls : 'icon-cancel-action',                   tooltip: '禁用该话题',                   handler: function(grid, rowIndex, colIndex, item) {                         var id=grid.getStore().getAt(rowIndex).data.id;                        var store=grid.getStore();                        Ext.MessageBox.confirm('请确认', '您确认要禁用该话题吗?',function(btn){                         if(btn=='yes'){                                    Ext.Ajax.request({                                    url:context+'api/topic/check/'+id,                                    method:'put',                                    success:function(response, opts){                                         Ext.Sharera.msg("成功",'话题禁用成功');                                     store.load();                                                                   },                                        failure:function(response, opts){Ext.Sharera.error("错误",'话题禁用修改失败'+message);                                        }                                    });                          }                          });                   },                   getClass:function(v,o,r,rowIndex,colIndex,store){                 if(r.data.enabled){                 return 'icon-cancel-action';                 }                 return 'x-hidden'                   }              },{               iconCls : 'icon-coins-action',                   tooltip: '启用该话题',                   handler: function(grid, rowIndex, colIndex, item) {                         var id=grid.getStore().getAt(rowIndex).data.id;                        var store=grid.getStore();                        Ext.MessageBox.confirm('请确认', '您确认要启用该话题吗?',function(btn){                         if(btn=='yes'){                                    Ext.Ajax.request({                                    url:context+'api/topic/check/'+id+'?type=enable',                                    method:'put',                                    success:function(response, opts){                                         Ext.Sharera.msg("成功",'话题启用成功');                                     store.load();                                                                   },                                        failure:function(response, opts){Ext.Sharera.error("错误",'话题启用失败'+message);                                        }                                    });                          }                          });                   },                   getClass:function(v,o,r,rowIndex,colIndex,store){                 if(!r.data.enabled){                 return 'icon-coins-action';                 }                 return 'x-hidden'                   }              }]         








原创粉丝点击