GridPanel不显示数据

问题描述

这段代码中,页面加载时,firebug显示processList.action被调用了两次,这是为什么?另外,选中一条数据,点击“流程定义”按钮后,仅弹出窗口,却不显示数据,但firebug显示数据已经加载了,究竟是哪儿有问题?请大家帮忙看看Ext.ns('Flow.processList');Flow.processList = function(){var store;var sm;var colModel;var grid;return{getStore:function(){store = new Ext.data.JsonStore({root: 'result',totalProperty: 'totalCount',remoteSort:false,storeId: 'processListId',autoDestroy: true,fields:['processId','processName','processVersion'],proxy: new Ext.data.HttpProxy({url: 'processList.action'}),autoLoad: true,sortInfo: {field:'processId',direction: 'ASC'}});//store.load();return store;},getSmModel: function(){sm = new Ext.grid.CheckboxSelectionModel({handleMouseDown: Ext.emptyFn//点击行时,不选中此行,要使的点击时,自动选中行,去掉此参数});return sm;},getColModel:function(){colModel = new Ext.grid.ColumnModel({columns: [ new Ext.grid.RowNumberer(), { header: "流程ID",dataIndex:'processId', sortable: true}, { header: "流程名称",dataIndex:'processName'}, { header: "流程版本",dataIndex:'processVersion'}, this.getSmModel(), ], defaults: { sortable: true }});return colModel;},getGrid:function(){grid = new Ext.grid.GridPanel({id: 'processListGrid',title:'流程列表',store: this.getStore(),cm: this.getColModel(),//colModel: this.colModel,sm: this.getSmModel(),viewConfig:{forceFit: true},tbar: [{ iconCls: '', text: '启动流程', handler:this.startProcess },'-',{ iconCls: '', text: '删除流程', //disabled: true, handler: this.removeProcess },'-', { iconCls: '', text: '流程定义', handler: this.getProcessDefinition },'-',{ iconCls: '', text: '流程图', handler: this.getProcessImage } ],bbar: new Ext.PagingToolbar({ pageSize: 10, store: this.getStore(), displayInfo: true, displayMsg: '显示流程 {0} - {1} of {2}', emptyMsg: "没有流程可显示", items:[ '-', { pressed: true, enableToggle:true, text: 'Show Preview', cls: 'x-btn-text-icon details', toggleHandler: function(btn, pressed){ var view = grid.getView(); view.showPreview = pressed; view.refresh(); } }] })});return grid;},startProcess: function(){if(!sm){sm = this.getSmModel();}var s = sm.getSelections()var process = s[0].data.processId;if(!process){Ext.Msg.alert('信息','未选择任何流程');return false;}else{Ext.Ajax.request({ url: 'startProcess.action?processId=' + process, success: function(response, opts) {var json = response.responseText||response.responseData;var result = Ext.decode(json); Ext.Msg.alert('信息',result.message); }, failure: function() { Ext.Msg.alert("错误","启动流程失败!"); }, scope: this });}},removeProcess: function(){if(!sm){sm = this.getSmModel();}var s = sm.getSelections()var process = s[0].data.processId;if(!process){Ext.Msg.alert('信息','未选择任何流程');return false;}else{Ext.Ajax.request({ url: 'deleteProcess.action?processId=' + process, success: function(response, opts) {var json = response.responseText||response.responseData;var result = Ext.decode(json); Ext.Msg.alert('信息',result.message); }, failure: function() { Ext.Msg.alert("错误","删除流程失败!"); }, scope: this });}},getProcessDefinition: function(){if(!sm){sm = this.getSmModel();}var s = sm.getSelections()var process = s[0].data.processId;if(!process){Ext.Msg.alert('信息','请选择要查看的流程');return false;}else{var processGrid = new Ext.grid.GridPanel({ store: new Ext.data.JsonStore({ root: 'resultSet',autoDestroy: true,fields:['processDefinition'],proxy: new Ext.data.HttpProxy({url: 'processDefinition.action?processId='+process}),autoLoad: true}), columns: [ {header: "流程定义", dataIndex: 'processDefinition'} ], viewConfig: { forceFit: true, }, sm: new Ext.grid.RowSelectionModel({singleSelect:true}),// width:600,// height:300, frame:true, title:'', iconCls:'icon-grid'});var win = new Ext.Window({id: 'processWin', width: 600, height: 300, title: '流程定义', plain: true, closable: true, //resizable: false, frame: true, layout: 'fit', autoScroll: true, border: false, modal: true, items:[processGrid]});win.show();}},getProcessImage: function(){ //TODO},render: function(tab){ if(!this.grid){ this.grid = this.getGrid(); tab.add(this.grid); }}}};Ext.onReady(function(){var win = new Ext.Window({});var f = new Flow.processList();f.render(win);win.show();}); 问题补充:babydeed 写道

解决方案

一般来说 tab上加了控件 比方你的tab.add(this.grid); 之后需要tab.doLayout()
解决方案二:
后台的数据格式需要这样的 不知道你的是不?{resultSet:[{processDefinition:"xxx"},{processDefinition:"xxx2"}]}
解决方案三:
后台的数据 发来看看
解决方案四:
Ext的弹出窗口里面的内容好像在火狐下面是不支持的,我以前遇到过,在IE下就正常
解决方案五:
我一般autoLoad: false, grid的store哪里需要加载时 才去load后台对于后一个问题 this.getProcessDefinition 你的这个具体操作没有给出代码

时间: 2024-07-31 01:30:11

GridPanel不显示数据的相关文章

菜鸟学ADO实例教程之ADO 显示数据

ado|教程|数据|显示 本站原创内容,转载请注明出处网页教学网. 从数据表中读出数据通常是显示在 HTML 的表格中的.下面介绍四种常用的显示数据的方法: 首先给大家介绍一点有关数据库表Customers的内容,数据库表中有如下字段:CustomerID(客户号). CompanyName(公司名) .ContactName(联系人).ContactTitle(联系方式).Address(地址).City(城市). PostalCode(邮编) .Country(国家) 并且我们可以事先随便输

ASP控制表格的行列来显示数据

控制|数据|显示     很多时候,我们在显示数据库的内容时,会用到几行或几列来显示数据,如10条数据,要以每行2列或3列形式显示.下面是一个使用数组以表格显示几行几列的简单的示列代码,希望对您有所帮助. <%function tablebody(arr,cols,functionstr) 'arr为数组 'cols为列数 'functionstr为输出内容用的function,没有为空  dim allnum,i,j allnum = ubound(arr) for i = 0 to (all

ASP.NET用Repeater控件显示数据

asp.net|控件|数据|显示     如果你正在使用ASP.NET,你一定对DataGrid控件非常熟悉.DataGrid控件提供了各种特性,通过这些特性可以很容易地在一个Web页面上以列表形式显示数据.但是,如果你不想使用HTML表格形式呢?此时,可以使用一个DataGrid的一个鲜为人知的兄弟控件,即Repeater控件.Repeater控件提供显示你所需要数据的灵活性.      Repeater控件是什么?      Repeater是一个可重复操作的控件,也就是说,它通过使用模板显

ASP实用技巧:控制表格的行列来显示数据

技巧|控制|数据|显示 很多时候,我们在显示数据库的内容时,会用到几行或几列来显示数据,如10条数据,要以每行2列或3列形式显示. 下面是一个使用数组以表格显示几行几列的简单的示列代码,希望对您有所帮助.<%function tablebody(arr,cols,functionstr)'arr为数组'cols为列数'functionstr为输出内容用的function,没有为空 dim allnum,i,jallnum = ubound(arr)for i = 0 to (allnum/col

Repeater显示数据的例子,带分页

分页|数据|显示   下面是个Repeater显示数据分页的例子我在做时候遇到的问题给大家提一下刚开始我使用DataReader做数据源,是不行,后才换DataSet 在设置分页的时候一定要搞清楚当前页,如果你把当前页设置成1,那么他就从第二页显示数据了,因为它的当前页是从0开始的,而我们显示当前页时候是从1开始的在比较是否达到总页数之前一定要先也给PS设置数据源,我就是先用ps.CurrentPageIndex==ps.PageCount-1检查是否在最后一页,然后再ps.DataSource

控制表格的行列来显示数据

控制|数据|显示 很多时候,我们在显示数据库的内容时,会用到几行或几列来显示数据,如10条数据,要以每行2列或3列形式显示. 下面是一个使用数组以表格显示几行几列的简单的示列代码,希望对您有所帮助. dimwwwstr,wwwarrwwwstr="51windows.Net|blueidea.com|google.com|yahoo.com|msn.com.cn|csdn.net|ipark.cn|1kg.cn"wwwarr=split(wwwstr,"|") fu

用Repeater控件显示数据

控件|数据|显示     如果你正在使用ASP.NET,你一定对DataGrid控件非常熟悉.DataGrid控件提供了各种特性,通过这些特性可以很容易地在一个Web页面上以列表形式显示数据.但是,如果你不想使用HTML表格形式呢?此时,可以使用一个DataGrid的一个鲜为人知的兄弟控件,即Repeater控件.Repeater控件提供显示你所需要数据的灵活性. Repeater控件是什么? Repeater是一个可重复操作的控件,也就是说,它通过使用模板显示一个数据源的内容,而你可以很容易地

用TreeView显示数据通用方法

treeview|数据|显示 public void TreeViewData(DataSet ds,string    textColumnName,string parentColumnName,string tagColumnName) {  myTreeData root = new myTreeData();    myTreeData child = null;    for (i = 0 ; i < ds.Tables[0].Rows.Count; ++i)    {     ch

ExtJs学习笔记(21)-使用XTemplate结合WCF显示数据

个人认为,XTemplate是ExtJs中最灵活的用来显示数据的组件,有点类似aspx中的Repeater控件,显示数据的模板完全可以由用户以html方式来定制. 先给一个官方的静态示例(稍微改了下),代码并不复杂,关键的地方,我已经注释了 1 <script type="text/javascript"> 2 Ext.onReady(function() { 3 4 var data = { 5 name: 'Jack Slocum', 6 title: 'Lead De