`
空空儿
  • 浏览: 136662 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

GridPanel 分页

阅读更多
在表格的工具栏上面有一个查询按钮,我是通过点击查询按钮的时候,发送Ajax请求,从后台获得数据

   显示在表格里面,现在是对表格数据进行分页,分页不了,表格里面的数据没有更新。只有分页栏工具可以进行上下翻页,但是表格里面的数据没有同步

       
                //一开始数据源里面是没有数据的
		var proStore = new Ext.data.JsonStore({
					

					});

			var checkColumn = new Ext.grid.CheckboxSelectionModel(); // 定义复选框
			var rowNum = new Ext.grid.RowNumberer();
			var projectColumn = new Ext.grid.ColumnModel([rowNum, checkColumn,
					{
						header : "销售单号",
						width : 160,
						dataIndex : "saleNo",
						id : "saleNo",
						sortable : true
					}, {
						header : "会员",
						width : 160,
						dataIndex : "saleVIP",
						id : "saleVIP"
					}, {
						header : "下单时间",
						width : 100,
						dataIndex : "orderTime",
						id : "orderTime",
						sortable : true,
						renderer : function(value) {
							if (value == null || value == 0) {
								return 'null'
							} else {
								// 时间转好,将时间戳转换成Ext显示的日期格式
								return Ext.util.Format.date(
										new Date(parseInt(value)), 'Y-m-d')
							}
						}
					}, {
						header : "客服",
						width : 100,
						dataIndex : "salePerson",
						id : "salePerson"
					}, {
						header : "数量",
						width : 80,
						dataIndex : "saleNumber",
						id : "saleNumber",
						sortable : true
					}, {
						header : "金额",
						width : 80,
						dataIndex : "salePrice",
						id : "salePrice",
						sortable : true
					}, {
						header : "回访记录",
						width : 100,
						dataIndex : "returnRecord",
						id : "returnRecord",
						sortable : true
					}, {
						header : "状态",
						width : 80,
						dataIndex : "status",
						id : "status",
						sortable : true
					}, {
						header : "快递号",
						width : 100,
						dataIndex : "expressID",
						id : "expressID",
						sortable : true
					}]);

			var tbar2 = new Ext.Toolbar({
						renderTo : Ext.grid.GridPanel.tbar,
						items : [{
							text : "打印销售单",
							iconCls : 'print',
							handler : function() {
								Ext.MessageBox.prompt("打印快递单", "请输入起始快递单号:",
										function(btn, text) {
										})
							}
						}, {
							xtype : "tbseparator"
						}, {
							text : '打印快递单',
							iconCls : 'print'
						}]
					});

			var contentGrid = new Ext.grid.GridPanel({
						renderTo : "saleQuery",
						id : "saleQueryGird",
						title : "销售查询",
						autoWidth : true,
						autoHeight : true,
						cm : projectColumn,
						sm : checkColumn, // 添加复选框
						store : proStore,
						autoScroll : true, // 内容溢出时产生滚动条

						tbar : [{
									xtype : "combo",
									store : saleStatusStore,
									id : "saleStatus",
									name : "saleFettle",
									hiddenName : "saleFettle",
									displayField : "fettlename",
									valueField : "fettleid",
									mode : "local",
									triggerAction : "all",
									emptyText : "请选择销售单状态"

								}, '&nbsp', '&nbsp', {
									xtype : "textfield",
									id : "saleCode",
									emptyText : "填写销售单"

								}, '&nbsp', '&nbsp', {
									xtype : "label",
									text : "选择时间:"
								}, '&nbsp', {
									xtype : "datefield",
									id : "chooseStartTime",
									name : "chooseStartTime",
									vtype : "daterange",
									endDateField : "chooseEndTime"

								}, '&nbsp', {
									xtype : "label",
									text : "至"
								}, '&nbsp', {

									vtype : "daterange",
									xtype : "datefield",
									id : "chooseEndTime",
									name : "chooseEndTime",
									startDateField : "chooseStartTime",
									value : new Date()

								}, '&nbsp', {
									xtype : "label",
									text : "快递公司:"
								}, '&nbsp', {
									xtype : "combo",
									store : ["圆通", "申通"],
									emptyText : "请选择快递公司"
								},'&nbsp', {
									text : "查詢",   //通过点击查询,才查询数据显示到表格,
									iconCls : "addBtn",
									handler : saleSelect
								}],
						listeners : {
							'render' : function() {
								tbar2.render(this.tbar);
							}
						},
						bbar : new Ext.PagingToolbar({
									id : "pagingToolbar",
									pageSize : 5,
									store : proStore,
									displayInfo : true,
									displayMsg : '显示第 {0} 条到 {1} 条记录,总共 {2} 条',
									emptyMsg : "没有记录"

								})

					});
			contentGrid.render();
		});

//查询方法
function saleSelect() {
	var saleStatus = Ext.getCmp("saleStatus").getValue();
	var saleCode = Ext.getCmp("saleCode").getValue();
	var startDate = Ext.getCmp("chooseStartTime").getValue();
	var endDate = Ext.getCmp("chooseEndTime").getValue();

	if (startDate == null || startDate == "") {
		Ext.MessageBox.alert("提示", "日期不能为空")
		return;
	}

	Ext.Ajax.request({
				url : "query_querySaleData.action",
				params : {
					saleStatus : saleStatus,
					saleCode : saleCode,
					startDate : startDate,
					endDate : endDate
				},
				success : function(response, action) {
					// alert(response.responseText);

					var data = Ext.util.JSON.decode(response.responseText);
					if (data == null || data == "") {
						Ext.MessageBox.alert("提示", "没有找到记录!");
					} else {
						updateGrid(data); // 更新表格数据
					}
				},
				failure : function(response, action) {
					Ext.MessageBox.alert("提示", "连接服务器失败!")
				}
			});

}

function updateGrid(data) {

	alert(Ext.util.JSON.encode(data));
	var proCreate = new Ext.data.Record.create([{
				name : "saleNo",
				mapping : "saleCodeNo",
				type : "string"
			}, {
				name : "saleVIP",
				mapping : "saleVipNo",
				type : "string"
			}, {
				name : "orderTime",
				mapping : "saleTime",
				type : "string"
			}, {
				name : "salePerson",
				mapping : "saleName",
				type : "string"
			}, {
				name : "saleNumber",
				mapping : "saleNum",
				type : "string"
			}, {
				name : "salePrice",
				mapping : "salePrice"
			}]);

	var jsonStore = new Ext.data.Store({
				// data : data,
				proxy : new Ext.data.PagingMemoryProxy(data),
				reader : new Ext.data.JsonReader({
							totalProperty : "totalProperty", // 总记录数
							root : "root" // 所有的数据(json对象数组)
						}, proCreate)
			});

	jsonStore.load({
				params : {
					start : 0,
					limit : 5    //这里也没有将值传到后台,那要怎么传?
				},
				callback : function(record, options, success) {
					if (success == false) {
						Ext.Msg.buttonText.ok = "确定";
						Ext.Msg.alert("错误", "服务器查询失败,请再次尝试!");
					} else {
						Ext.MessageBox.alert("提示", "success")

					}
				}
			});

	alert("totalCount = " + jsonStore.getTotalCount());

	alert("count = " + jsonStore.getCount());

	var saleQueryGrid = Ext.getCmp("saleQueryGird");
	saleQueryGrid.getStore().removeAll();
	saleQueryGrid.getStore().add(jsonStore.getRange()); // 表格重新绑定数据源

	// 分页工具重新绑定数据源
	Ext.getCmp("pagingToolbar").bind(jsonStore);

}

 


请大家大家帮帮忙看看,到底哪里不对,该怎么实现这个分页? 很困扰,谢谢了。。

我是通过点击事件之后才发生请求去读取数据的。。
分享到:
评论
4 楼 温柔企鹅 2011-11-07  
我拷了一下代码,我的程序里面,都不会显示出来的,不过,我可以从后台传数据!我感觉你可能没有配置struts.xml文件里面的json
3 楼 ningwuyu 2011-09-06  
Ext.onReady(function(){
     Ext.MessageBox.alert('aaaaa');

})
2 楼 ningwuyu 2011-09-06  
aaaaaaaaaaaaaaaaa
1 楼 qishi001 2010-08-12  
<pre name="code" class="java">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;title&gt;查询功能的GridPanel&lt;/title&gt;
&lt;link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css" /&gt;
&lt;script type="text/javascript" src="../../adapter/ext/ext-base.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="../../ext-all.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;
Ext.onReady(function(){
Ext.QuickTips.init();
var store = new Ext.data.Store({
url:'',
reader: new Ext.data.JsonReader({
totalProperty:'total',
root:'results'
},
[
   'id','name','sex','age'
]
),
remoteSort : true,
baseParams : {}
});

var ColMod = new Ext.grid.ColumnModel([
{
header: "编号",
sortable: true,
align :'center',
dataIndex: 'id'
},{
header: "姓名",
sortable: true,
align :'center',
dataIndex: 'name'
},{
header: "性别",
sortable: true,
align :'center',
dataIndex: 'sex'
},{
header: "年龄",
sortable: true,
align :'center',
dataIndex: 'age'
}
]);

/**将查询条件封装到封到Ext.Toolbar**/

var TopSerachBar = new Ext.Toolbar({
id : 'TopSerachBar',
border : false,
frame: false,
anchor : '100%',
style: {
border : 'none'
},
items : ['编号:',{
xtype: 'textfield',
id : 'ID',
name : 'ID'
},'-','姓名:',{
xtype: 'textfield',
id : 'NAME',
name : 'NAME'
},'-','年龄:',{
xtype: 'textfield',
id : 'AGE',
name : 'AGE'
},'-',{
text : '查  询',
handler : function (btn,e){
var params = SearchPanel.getForm().getValues();
params['start'] = 0;
params['limit'] = 30;
store.load({params:params});
}
}]
});

/**将Toolbar封装到Ext.form.FormPanel**/

var SearchPanel = new Ext.form.FormPanel({
defaultType: 'textfield',
id : 'SearchPanel',
name : 'SearchPanel',
border : false,
frame : false,
items :[TopSerachBar]
});

var grid = new Ext.grid.GridPanel({
frame: false,
id : 'grid',
ds: store,
trackMouseOver : true,
loadMask:({msg :'数据正在加载中……'}),
height:320,
title:'',
cm: ColMod,
sm : new Ext.grid.RowSelectionModel({singleSelect:true}),
tbar : [SearchPanel],
viewConfig: {
forceFit: true
},
renderTo :'container',
bbar: new Ext.PagingToolbar({
pageSize : 30,
store : store,
displayInfo : true,
beforePageText : '第',
afterPageText : '页&amp;nbsp;共 {0} 页',
refreshText : '刷新',
displayMsg : '显示第 {0} 条到 {1} 条记录,一共 {2} 条记录',
emptyMsg : '没有记录',
doLoad: function(v){
/**点击分页时会把查询参数传递过去**/
var params = SearchPanel.getForm().getValues();
//alert(params.ID);
params['start'] = v;
params['limit'] = this.pageSize;

if (this.fireEvent("beforechange", this, params) !== false) {
this.store.load({
params: params
});
}
}
})
});
});
&lt;/script&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;div id="container"&gt;&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>    </p>
<p>   希望对你有帮助。</p>

相关推荐

    Ext2.2.GridPanel分页处理+dwrproxy(js对象和json两种数据)

    本话题将深入探讨如何在Ext2.2中使用GridPanel进行分页处理,并结合DWR(Direct Web Remoting)代理来实现数据的异步加载。我们将关注两个数据格式:JavaScript对象(JS对象)和JSON。 首先,Ext2.2的GridPanel是...

    Ext3.2的TreePanel和GridPanel的分页与Hibernate的分页功能的影射

    在使用表格的分页功能时,我们把该控件的start与limits参数与Hibernate的分页功能影射,从页实现了动态的分页效果;而TreePanel的更新也是一个比较常见的问题,当我们点击测试按钮时,TreePanel会请求远程服务器的...

    EXTJS分页全面分析

    #### 一、EXTJS GridPanel分页概述 在EXTJS框架中,`GridPanel`组件是一种常用的数据展示工具,它能够以表格形式呈现数据集。而分页功能是`GridPanel`一个重要的特性,它能够帮助用户更有效地管理大量的数据记录,...

    ExtJs中文教程

    #### 二十一、GridPanel分页 1. **JSON-LIB简介** - JSON-LIB是用于处理JSON数据的Java库,常用于服务器端分页。 2. **分页工具栏** - 展示如何使用ExtJs内置的分页工具栏组件。 3. **实现GridPanel分页** - 通过...

    轻松搞定ExtJS

    #### 第二十一章:GridPanel分页 - **跑跑题——JSON-LIB**:介绍了JSON-LIB库的基本用法,以及它如何与GridPanel配合使用。 - **分页工具栏**:详细说明了如何配置GridPanel的分页工具栏。 - **分页**:解释了如何...

    ExtJS 轻松搞定

    ### 第二十部分:GridPanel分页 #### 一、跑跑题——JSON-LIB 探讨了JSON-LIB库在处理JSON数据格式中的作用,以及如何与ExtJS框架结合使用。 #### 二、分页工具栏 介绍了如何使用分页工具栏(Pagination Toolbar)...

    Extjs中文教程

    #### 二十、GridPanel分页 - **分页工具栏**:`PagerToolbar`用于控制GridPanel的分页显示,包括当前页码、总页数等信息。 - **分页数据加载**:实现GridPanel的分页加载功能,优化大数据量下的用户体验。 #### ...

    轻松搞定Extjs

    #### GridPanel分页 当表格中的数据量较大时,分页功能就显得尤为重要。 - **跑跑题——JSON-LIB**: 介绍了JSON-LIB在处理异步数据传输中的作用。 - **分页工具栏**: 详细解释了如何使用Extjs提供的分页工具栏组件...

    扩展GridPanel,附带分页选中状态,实现快速构建一个功能齐全的Grid

    在本文中,我们将深入探讨如何扩展ExtJS的GridPanel组件,以实现带有分页和选中状态的功能。ExtJS是一个强大的JavaScript库,用于构建富客户端应用程序,而GridPanel是其核心组件之一,用于展示和操作表格数据。通过...

    轻松搞定ExtJS.pdf

    GridPanel分页 - **分页工具栏**: 提供了翻页控件。 - **分页功能**: 根据用户选择显示特定页的数据。 #### 22. GridPanel扩展 - **扩展**: 通过自定义类增强GridPanel的功能。 - **RowExpander**: 展开表格行以...

    Ext中文文档

    #### 第二十一章:GridPanel分页 - **分页工具栏与实现**:介绍了如何在GridPanel中实现分页功能,以及相关的分页工具栏组件。 #### 第二十二章:GridPanel扩展 - **GridPanel的扩展功能**:探讨了GridPanel的...

    Extjs学习带注释

    - **分页工具栏**:了解如何在 GridPanel 中添加分页工具栏,实现数据分页。 #### 二十二、GridPanel 扩展 - **自学技巧**:鼓励读者自行学习并探索 GridPanel 的更多高级用法。 - **RowExpander**:了解 ...

    ExtJs 中文文档

    #### 二十一、GridPanel 分页 - **分页工具栏**:提供导航控件,如“上一页”、“下一页”等。 - **分页实现**:通过 Store 的分页功能来实现数据的分页加载。 #### 二十二、GridPanel 扩展 - **带摘要的 ...

    EXTJSEXT实例GridPanel.

    GridPanel是EXTJS中的一个核心组件,它允许开发者以网格形式展示数据,支持多种功能,如排序、分页、筛选、编辑等。在EXTJS中,GridPanel通常与Store结合使用,Store负责管理数据,而GridPanel则负责显示这些数据。 ...

    ext.net 动态创建gridpanel

    - 配置 `GridPanel` 的其他属性,如高度、宽度、是否有分页等。 - 将 `GridPanel` 添加到相应的容器,例如 `Ext.Net.Panel` 或 `Ext.Net.Window`。 2. **显示在各种窗口中**: GridPanel 可以被嵌入到不同类型的...

Global site tag (gtag.js) - Google Analytics