A. EXTjs grid 分页成功但是还是显示全部数据
不懂你后台怎么写的,第一次请求也只要返回15条就可以了,不要返回全部数据。专
extjs分页,比属如你有40条数据,你要分页,每页15条。
后台做的时候,并不要返回40条,只要返回15条就够了。然后带一个总数40条。即可。
这样,extjs就知道,你有三页。
B. EXTJS:怎么统一的定义分页条数
这个可以通过重写的方式来实现代码如下:
Ext.define("Ext.data.Store",{
override:"Ext.data.Store",
constructor:function(){
this.callParent(arguments);
this.pageSize = 15; //自定义页数
}
});
C. extjs分页传参问题
不知道你用的是Extjs哪个版本,下面贴出来的是extjs4的分页写法:
Ext.extend(Ext.ux.PageSizePlugin,Ext.form.ComboBox,{
init:function(paging){
paging.on('render',this.onInitView,this);
},
onInitView:function(paging){
paging.add('-','每页显示',this,'条记录');
this.setValue(paging.pageSize);
this.on('select',this.onPageSizeChanged,paging);
this.on('keydown',this.onPageSizeKeydown,paging);
},
onPageSizeChanged:function(combo){
this.pageSize=parseInt(combo.getValue());
compage=parseInt(combo.getValue());
pageSize=compage;
gridPanel.getStore().pageSize=compage;
query();
},
onPageSizeKeydown:function(combo,e){
if(e.keyCode==13){
this.pageSize=parseInt(combo.getRawValue());
compage=this.pageSize;
pageSize=compage;
gridPanel.getStore().pageSize=compage;
query();
}
}
});
D. ExtJs读取后台数据进行分页
oStore = new Ext.data.JsonStore({
url: '/backend/getdata', // 这儿就是你说的后台
root: 'data',
totalProperty: 'total', // total 里面放记录总数
remoteSort: true,
fields: [ // 具体有哪些字段?
'field1',
'field2',
... ...
]
});
var selModel = new Ext.grid.CheckboxSelectionModel();
var colModel = new Ext.grid.ColumnModel([selModel, {
//表格列定义
... ...
]);
oGrid = new Ext.grid.GridPanel({
title: '标题',
iconCls:'icon_xxx', // 图标
ds: oStore,
cm: colModel,
sm: selModel,
loadMask: {
msg: 'Loading...'
},
tbar:[{ //头部工具条
text: '按钮1',
iconCls: 'icon-fileup',
tooltip: '按钮1的动作',
handler: function(btn, e){
//
}
}],
bbar: new Ext.PagingToolbar({ //底部工具条(分页在这儿实现)
store: oStore,
pageSize: 30, //每页显示的记录数
displayInfo: true,
plugins: [new Ext.ux.PageSizePlugin()], // 这是一个插件,在网上找找
emptyMsg: "没有数据"
}),
listeners: {
render: function() {
//加载首页数据
oStore.load({params:{start:0, limit:30}});
}
}
});
/backend/getdata 返回的数据应该是这样
{
data: [...],
total: 100
}
E. (高分请教)extjs与java结合后进行页面分页问题
想做分页必须要与后台进行交互.给你一个我写的程序前台页面:
<%@ page contentType="text/html; charset=UTF-8" language="java"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-nested" prefix="nested"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<html>
<head>
<title></title>
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/tab.css" type="text/css"></link>
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath() %>/scripts/ext/resources/css/ext-all.css">
<script type="text/javascript" src="<%=request.getContextPath() %>/scripts/ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="<%=request.getContextPath() %>/scripts/ext/ext-all.js"></script>
</head>
<script type="text/javascript">
mole_js =function() {
var ds, cm, gridHead, gridFoot, paging, grid;
var countPerPage=12; //每页显示几条
var mod_mole_win,mod_id_temp;
return {
init : function(){
//设置布局
var border = new Ext.Panel({
title: '布局',
layout:'border',
items: [{
title: '北部面板',
region: 'north',
height: 100,
minSize: 75,
maxSize: 250//,
//margins: '0 5 5 5'
},{
title: '模块列表',
region:'center'//,
// margins: '5 5 0 0'
}]
});
//显示模块列表
ds = new Ext.data.Store({ //定义数据集合
proxy: new Ext.data.HttpProxy({url:'sysFunction.do?method=selectMole'}), //读取列表的方法,id是传进来的
reader: new Ext.data.JsonReader({ //读取方式
totalProperty: 'totalProperty', //后台返回的总记录数,要与后台字段对应
root: 'jsondata' //后台返回的结果
}, [
{name: 'functionId'},
{name: 'showName'},
{name: 'functionName'},
{name: 'linkUrl'}
])
});
ds.on('beforeload',beforeload);
function beforeload(myds,options){
var conditaion = {parentId:'-1',level:1,functionName:document.getElementById('functionName').value,showName:document.getElementById('showName').value,showOrder:document.getElementById('showOrder').value,linkUrl:document.getElementById('linkUrl').value,hrefTarget:document.getElementById('hrefTarget').value,showInMenu:document.getElementById('showInMenu').value};
options=options||{};
options.params = options.params||{};
options.params.conditaion = Ext.util.JSON.encode(conditaion);
return true;
}
ds.load({params:{start:0,limit:countPerPage}}); //加载数据
cm = new Ext.grid.ColumnModel([ //定义列
new Ext.grid.RowNumberer(), //行号
{header:'ID',dataIndex:'functionId',width: 40,sortable: true},
{header:'模块名',dataIndex:'functionName',width: 120,sortable: true},
{header:'显示名',dataIndex:'showName',width: 130,sortable: true},
{header:'URL',dataIndex:'linkUrl',width: 260,sortable: true}
]);
var pagingBar = new Ext.PagingToolbar({ //分页按钮
pageSize: countPerPage,
store: ds,
displayInfo: true,
displayMsg: '第 {0} 条 - 第 {1} 条 共 {2} 条',
emptyMsg: "没有数据",
items:[
'-', {
pressed: true,
enableToggle:true,
text: '删 除 模 块',
cls: 'x-btn-text-icon details',
toggleHandler: confirmDelMole
}]
});
grid = new Ext.grid.GridPanel({ //开始构建列表
el: 'mole_grid', //所使用的div
ds: ds, //数据集合
cm: cm, //列定义
height: 340, //该列表的高和宽
width: 590,
bbar: pagingBar
});
grid.render(); //开始生成列表
grid.on('rowdblclick',function(grid,rowIndex,e){
var mod_id=ds.getAt(rowIndex).data['functionId'];
//var mod_id=ds.getAt(rowIndex).functionId;
mod_id_temp = mod_id;
openModPage(mod_id);
});
function openModPage(mod_id){
if(typeof(mod_id)=="undefined"||mod_id==null){
Ext.Msg.alert("提示信息","请选择您要修改的一行");
return false;
}
document.getElementById('mod_mole').style.display="";
var handle = function (opts, success, response) {
if(success){
var data = eval("("+response.responseText+")");
if(data.result){
var nav = new Ext.Panel({
items:[{
id:'mod_mole_id',
width:600,
height:300,
contentEl:'mod_mole'
}]
});
if(!mod_mole_win||mod_mole_win!=null){
mod_mole_win = new Ext.Window({
width: 600,
height: 300,
closeAction:'hide',
minimizable: false,
title: '修改模块',
items:[nav],
keys: [{ key: 27,
fn: function(){mod_mole_win.hide();} }]});
mod_mole_win.on('minimize', function(){
mod_mole_win.toggleCollapse();});
mod_mole_win.show();
}
mod_mole_win.show(this);
document.getElementById('mod_functionName').value = data.functionName;
document.getElementById('mod_showName').value = data.showName;
document.getElementById('mod_showOrder').value = data.showOrder;
document.getElementById('mod_linkUrl').value = data.linkUrl;
document.getElementById('mod_hrefTarget').value = data.hrefTarget;
document.getElementById('mod_showInMenu').value = data.showInMenu;
mod_id_temp = data.functionId;
}else{
Ext.Msg.alert("提示信息",data.message);
}
}else{
Ext.Msg.alert("提示信息","ajax请求没能正常完成");
}
};
var url = 'sysFunction.do?method=toModMole';
var params = {data:Ext.util.JSON.encode({mod_id:mod_id,time_stamp:(new Date()).getTime()})};
var connection = new Ext.data.Connection();
connection.request({url:url,method:'POST',params:params,callback:handle});
}
function confirmDelMole()
{
var rows=grid.getSelectionModel().getSelections();
if(typeof(rows)=="undefined"||rows===null||rows==""){
Ext.Msg.alert("提示信息","请选择要删除的模块");
return false;
}
var del_ids="";
for(var i=0;i<rows.length;i++)
{
del_ids=del_ids+rows[i].get("functionId")+',';
}
var handle = function (opts, success, response) {
if(success){
var data = eval("("+response.responseText+")");
if(data.result){
if(data.count>0){
Ext.Msg.alert("提示信息","该模块下面还有"+data.count+"个菜单?请先删除其子菜单后再删除该模块?!");
return false;
}else{
Ext.MessageBox.confirm('删除提示', '确定删除该模块吗?', delMole);
}
}else{
Ext.Msg.alert("提示信息",data.message);
}
}else{
Ext.Msg.alert("提示信息","ajax请求没能正常完成");
}
};
var url = 'sysFunction.do?method=preDelMole';
var params = {data:Ext.util.JSON.encode({del_ids:del_ids,time_stamp:(new Date()).getTime()})};
var connection = new Ext.data.Connection();
connection.request({url:url,method:'POST',params:params,callback:handle});
}
function delMole(btn)
{
if(btn=="yes"){
var rows=grid.getSelectionModel().getSelections();
if(typeof(rows)=="undefined"||rows===null||rows==""){
Ext.Msg.alert("提示信息","请选择要删除的模块");
return false;
}
var del_ids="";
for(var i=0;i<rows.length;i++)
{
del_ids=del_ids+rows[i].get("functionId")+',';
}
var handle = function (opts, success, response) {
if(success){
var data = eval("("+response.responseText+")");
if(data.result){
ds.reload();
Ext.Msg.alert("提示信息","删除成功");
}else{
Ext.Msg.alert("提示信息",data.message);
}
}else{
Ext.Msg.alert("提示信息","ajax请求没能正常完成");
}
};
var url = 'sysFunction.do?method=delMole';
var params = {data:Ext.util.JSON.encode({del_ids:del_ids,time_stamp:(new Date()).getTime()})};
var connection = new Ext.data.Connection();
connection.request({url:url,method:'POST',params:params,callback:handle});
}
}
},closeModMoleWin:function()
{
mod_mole_win.hide();
},modMole:function()
{
var functionName = document.getElementById('mod_functionName').value;
var showName = document.getElementById('mod_showName').value;
var showOrder = document.getElementById('mod_showOrder').value;
var linkUrl = document.getElementById('mod_linkUrl').value;
var hrefTarget = document.getElementById('mod_hrefTarget').value;
var showInmenu = document.getElementById('mod_showInMenu').value;
var handle = function (opts, success, response) {
if(success){
var data = eval("("+response.responseText+")");
if(data.result){
mole_js.closeModMoleWin();
ds.reload();
Ext.Msg.alert("提示信息","修改成功");
}else{
Ext.Msg.alert("提示信息",data.message);
}
}else{
Ext.Msg.alert("提示信息","ajax请求没能正常完成");
}
};
var url = 'sysFunction.do?method=modMole';
var params = {data:Ext.util.JSON.encode({mod_id:mod_id_temp,functionName:functionName,showName:showName,showOrder:showOrder,showInmenu:showInmenu,linkUrl:linkUrl,hrefTarget:hrefTarget,time_stamp:(new Date()).getTime()})};
var connection = new Ext.data.Connection();
connection.request({url:url,method:'POST',params:params,callback:handle});
},selectMole:function()
{
ds.load({params:{start:0,limit:countPerPage}});
}
};
}();
Ext.EventManager.onDocumentReady(mole_js.init, mole_js, true);
</script>
<body>
<table>
<tr>
<td align="center">
<div id="north" align="left">
<center><h3>查询模块</h3></center>
<table align="center">
<tr>
<td>
模块名(英文):
</td>
<td height="25">
<input type="text" id="functionName">
</td>
<td>
模块显示名:
</td>
<td height="25">
<input type="text" id="showName">
</td>
</tr>
<tr>
<td>
显示次序:
</td>
<td height="25">
<input type="text" id="showOrder">
</td>
<td>
链接路径(没有不填):
</td>
<td height="25">
<input type="text" id="linkUrl">
</td>
</tr>
<tr>
<td>
所在窗口(没有不填):
</td>
<td height="25">
<input type="text" id="hrefTarget">
</td>
<td>
是否在菜单中显示:
</td>
<td height="25">
<select id="showInMenu" style="width:155px">
<option value="">所有</option>
<option value="t">显示</option>
<option value="f">不显示</option>
</select>
</td>
</tr>
<tr>
<td>
备注(没有不填):
</td>
<td height="25" colspan="3">
<input type="text" id="memo" size="60">
</td>
</tr>
<tr>
<td height="25" align="center" colspan="4">
<input type="button" name="subButton" id="subButton" value="查询" onclick="mole_js.selectMole();">
</td>
</tr>
</table>
</div>
</td>
</tr>
<tr>
<td>
<br>
<div id="center">
<div id="mole_grid">
</div>
</div>
</td>
</tr>
</table>
<div id="mod_mole" style="display:none">
<center><h3>修改模块</h3></center>
<table align="center">
<tr>
<td>
模块名(英文):
</td>
<td height="25">
<input type="text" id="mod_functionName" size="60">
</td>
</tr>
<tr>
<td>
模块显示名:
</td>
<td height="25">
<input type="text" id="mod_showName" size="60">
</td>
</tr>
<tr>
<td>
显示次序:
</td>
<td height="25">
<input type="text" id="mod_showOrder" size="60">
</td>
</tr>
<tr>
<td>
链接路径(没有不填):
</td>
<td height="25">
<input type="text" id="mod_linkUrl" size="60">
</td>
</tr>
<tr>
<td>
所在窗口(没有不填):
</td>
<td height="25">
<input type="text" id="mod_hrefTarget" size="60">
</td>
</tr>
<tr>
<td>
是否在菜单中显示:
</td>
<td height="25">
<select id="mod_showInMenu" style="width:435px">
<option value="t">显示</option>
<option value="f">不显示</option>
</select>
</td>
</tr>
<tr>
<td>
备注(没有不填):
</td>
<td height="25">
<input type="text" id="mod_memo" size="60">
</td>
</tr>
<tr>
<td height="25" align="center" colspan="2">
<input type="button" name="subButton" id="subButton" value="确认" onclick="mole_js.modMole();">
<input type="button" name="closeButton" value="关闭" onclick="mole_js.closeModMoleWin();">
</td>
</tr>
</table>
</div>
</body>
</html>
你参考下,把例子往下接着做,看着是有点长,不过不要紧,你先把教程的例子看完,然后你再看就知道需要提炼什么了,我这个jsp涵盖了很多东西,你做其他什么的时候也许也会用到的.
F. extjs 一次性把数据取出后在grid 里面怎么分页
如果是用extjs的分页插件的话,是没办法实现的
只有后台输出固定量的数据才能实现这个效果专
虽然属extjs的官方demo有一个demo确实是一次性数据分页,但是别人是写了插件才实现的,如果直接用分页插件肯定不行
至于那个本地分页插件,你参考一下官网例子吧,我自己弄了好久也没搞定
纯手打,希望帮到你
G. Extjs 分页工具条加按钮,然后输入第几页,点击按钮就跳转到第几页怎么实现
给那个数据框添加侦听事件,点击或者回车时执行侦听事件,执行数据加载就可以了。我的源码:
var pagingBar = new Ext.PagingToolbar({
pageSize : Cookies.get('pageSize')
? parseInt(Cookies.get('pageSize'))
: 15,
store : myStore,
displayInfo : true,
displayMsg : '第{0} - {1}条,共{2}条',
emptyMsg : "没有记录",
items : ['-', '每页', new Ext.form.Field({
hideLabel : 'true',
size : '3',
height : '18',
cls : "x-tbar-page-number",
id : 'pagefield'
}), '条记录']
});
if (Ext.getCmp('pagefield')) {
Ext.getCmp('pagefield').on("specialkey", function(arg, e) {
var k = e.getKey();
if (k == e.RETURN) {
e.stopEvent();
pagingBar.pageSize = parseInt((arg.getValue()%1==0 && arg.getValue()>0)?arg.getValue():15);
Cookies.set('pageSize', pagingBar.pageSize);
pagingBar.doLoad(0);
arg.setValue(pagingBar.pageSize);
} else if (k == e.UP || k == e.PAGEUP || k == e.DOWN
|| k == e.PAGEDOWN) {
e.stopEvent();
var pageNum = parseInt((arg.getValue()%1==0 && arg.getValue()>0)?arg.getValue():15);
var increment = e.shiftKey ? 10 : 1;
if (k == e.DOWN || k == e.PAGEDOWN) {
increment *= -1;
}
pageNum += increment;
arg.setValue(pageNum);
}
});
Ext.getCmp('pagefield').on("focus", function() {
this.el.dom.select();
});
Ext.getCmp('pagefield').setValue(pagingBar.pageSize);
}