关于jqgrid列排序的问题。

ybhzf 2010-11-03 10:45:44
代码如下:
问题:
例如:在jqgrid有分页的情况下,选择非第一页时(比如第2页的某个列),对列进行排序,jqgrid回传的url的当前页码会变成是第一页而非我当前选择的第二页,如何解决?
$("#selectinfo").show();
var times,url,bt,cl,tp;
times = new Date().getTime();
url="/ServletBase.ashx?";

jQuery("#list2").trigger("reloadGrid");
jQuery("#list2").jqGrid({
url:url,
datatype: "xml",
mtype: 'GET',
width:document.body.clientWidth,
colNames:['片区编号','片区名称', '状态', '备注','操作'],
colModel:[
{name:'areaid',index:'areaid',align:'center'},
{name:'areaname',index:'areaname',align:'center'},
{name:'status',index:'status',align:'center',formatter:'checkbox'},
{name:'note',index:'note',align:'center'},
{name:'operator',index:'operator',align:'center',width:120,sortable:false}
],
rowNum:2,
pager: $('#pager2'),
sortname: '片区编号',
viewrecords: true,
sortname:"areaid",
sortorder: "asc",
pginput:true,
caption:"",
sortable: true,
drag: true,
gridview: true,
rownumbers: true,
rownumWidth: 50,
multiselect: false,
loadComplete: function()
{
var ids = jQuery("#list2").jqGrid('getDataIDs');
for(var i=0;i < ids.length;i++)
{
cl = ids[i];
tp =$("#list2").getCell(cl,3);
bt="<input type='button' value='编辑' id='edit"+cl+"' />";
if (tp.toUpperCase()=="yes".toUpperCase())
{
bt+="<input type='button' value='禁用' id='status"+cl+"'onclick=\"editstatus('"+$("#list2").getCell(cl,1)+"','"+tp+"','"+cl+"')\" />";
}
else
{
bt+="<input type='button' value='启用' id='status"+cl+"' onclick=\"editstatus('"+$("#list2").getCell(cl,1)+"','"+tp+"','"+cl+"')\" />";
}
jQuery("#list2").jqGrid('setRowData',ids[i],{operator:bt});
}
},
onSortCol: function (index, colindex, sortorder)
{
//列排序事件
alert('onSortCol index=>'+index +" colindex=>"+colindex +" sortorder=>"+sortorder);

},
loadError : function(xhr,st,err)
{
alert("Type: "+st+"; Response: "+ xhr.status + " "+xhr.statusText);
//$("#tblMasterMessage").html("Type: "+st+"; Response: "+ xhr.status + " "+xhr.statusText);
}

});
$("#list2").resetSelection();
...全文
2786 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ybhzf 2010-11-03
  • 打赏
  • 举报
回复
自己解决了用全局变量解决了排序后翻页的问题。
通过
onPaging:function()
{
dd=jQuery('#list2').jqGrid('getGridParam','page');
}
onSortCol: function (index, colindex, sortorder)
{
//列排序事件
jQuery("#list2").jqGrid('setGridParam',{page:dd});
}
ybhzf 2010-11-03
  • 打赏
  • 举报
回复
尝试注册onHeaderClick事件不生效。
$("#selectinfo").show();
var times,url,bt,cl,tp;
times = new Date().getTime();
url="/ServletBase.ashx?";
url=url+"action=findarealist&logtime="+encodeURI(times)+"&areaid="+encodeURI($("#areaid").val())+"&areaname="+encodeURI($("#areaname").val())+"&status="+encodeURI($("#Status").val());

jQuery("#list2").trigger("reloadGrid");
jQuery("#list2").jqGrid({
url:url,
datatype: "xml",
mtype: 'GET',
width:document.body.clientWidth,
colNames:['片区编号','片区名称', '状态', '备注','操作'],
colModel:[
{name:'areaid',index:'areaid',align:'center',sortable:false},
{name:'areaname',index:'areaname',align:'center',sortable:true},
{name:'status',index:'status',align:'center',formatter:'checkbox',sortable:false},
{name:'note',index:'note',align:'center',sortable:false},
{name:'operator',index:'operator',align:'center',width:120,sortable:false}
],
rowNum:2,
pager: $('#pager2'),
sortname: '片区编号',
viewrecords: true,
sortname:"areaid",
sortorder: "asc",
pginput:true,
caption:"",
sortable: true,
drag: true,
gridview: true,
rownumbers: true,
rownumWidth: 50,
multiselect: false,
loadComplete: function()
{
var ids = jQuery("#list2").jqGrid('getDataIDs');
for(var i=0;i < ids.length;i++)
{
cl = ids[i];
tp =$("#list2").getCell(cl,3);
bt="<input type='button' value='编辑' id='edit"+cl+"' />";
if (tp.toUpperCase()=="yes".toUpperCase())
{
bt+="<input type='button' value='禁用' id='status"+cl+"'onclick=\"editstatus('"+$("#list2").getCell(cl,1)+"','"+tp+"','"+cl+"')\" />";
}
else
{
bt+="<input type='button' value='启用' id='status"+cl+"' onclick=\"editstatus('"+$("#list2").getCell(cl,1)+"','"+tp+"','"+cl+"')\" />";
}
jQuery("#list2").jqGrid('setRowData',ids[i],{operator:bt});
}
},
onSortCol: function (index, colindex, sortorder)
{
//列排序事件
alert('onSortCol index=>'+index +" colindex=>"+colindex +" sortorder=>"+sortorder);

},
loadError : function(xhr,st,err)
{
alert("Type: "+st+"; Response: "+ xhr.status + " "+xhr.statusText);
//$("#tblMasterMessage").html("Type: "+st+"; Response: "+ xhr.status + " "+xhr.statusText);
},
onHeaderClick:function()
{
alert("111");
}

});
ybhzf 2010-11-03
  • 打赏
  • 举报
回复
因为jqgrid在分页的情况下不支持客户端排序,所有的排序都是要提交到服务器端进行排序的。
有时候客户要求的就是希望实现当前按照指定列客户端排序的效果(所以不希望返回第一页)。
hch126163 2010-11-03
  • 打赏
  • 举报
回复
通常,重新搜索,排序后都会显示第一页啊!这样才是用户最想要的结果!
当前课程中商城项目的实战源码是我发布在 GitHub 上的开源项目 newbee-mall (新蜂商城),目前已有 9900 多个 Star,本课程是一个 Spring Boot 技术栈的实战类课程,课程共分为 3 大部分,前面两个部分为基础环境准备和相关概念介绍,第三个部分是 Spring Boot 商城项目功能的讲解,让大家实际操作并实践上手一个大型的线上商城项目,并学习到一定的开发经验以及其中的开发技巧。商城项目所涉及的功能结构图整理如下: 作者寄语本课程录制于2019年,距今已有一段时间。期间,Spring Boot技术栈也有一些版本升级,比如Spring Boot 2.7.x发版、Spring Boot 3.x版本正式版本。对于这些情况,笔者会在本课程实战项目的开源仓库中创建不同的代码分支,保持实战项目的源码更新,保证读者朋友们不会学习过气的知识点。新蜂商城的优化和迭代工作不会停止,不仅仅是功能的优化,在技术栈上也会不断的增加,截止2023年,新蜂商城已经发布了 7 个重要的版本,版本记录及开发计划如下图所示。 课程特色 对新手开发者十分友好,无需复杂的操作步骤,仅需 2 秒就可以启动这个完整的商城项目最终的实战项目是一个企业级别的 Spring Boot 大型项目,对于各个阶段的 Java 开发者都是极佳的选择实践项目页面美观且实用,交互效果完美教程详细开发教程详细完整、文档资源齐全代码+讲解+演示网站全方位保证,向 Hello World 教程说拜拜技术栈新颖且知识点丰富,学习后可以提升大家对于知识的理解和掌握,可以进一步提升你的市场竞争力 课程预览 以下为商城项目的页面和功能展示,分别为:商城首页 1商城首页 2购物车订单结算订单表支付页面后台管理系统登录页商品管理商品编辑

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧