- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是使用 jqgrid 的新手。
当新页面加载时,网格正在正确地从数据库加载数据。之后,由于 loadonce: true ,网格不会从数据库重新加载数据以进行添加/编辑/删除。
我的应用组合是JSP、Servlet、MySQL
我有一个具有以下设置的网格
jQuery("#userList").jqGrid({
url: '<%=request.getContextPath()%>/userJqGrid?q=1&action=fetchData&userCookie=<%= encodedCookie%>',
datatype: 'xml',
mtype: 'GET',
colNames:['<%= userProp.getProperty(userColNames[0])%>',
'<%= userProp.getProperty(userColNames[1])%>',
'<%= userProp.getProperty(userColNames[2])%>',
'<%= userProp.getProperty(userColNames[3])%>',
'<%= userProp.getProperty(userColNames[4])%>',
'<%= userProp.getProperty(userColNames[5])%>'
],
colModel:[
{name:'<%= userColNames[0]%>',index:'<%= userColNames[0]%>',
width:120,sortable:true,editable:true,editrules:{required:true},formoptions:{rowpos:1, elmprefix:'*'}},
{name:'<%= userColNames[1]%>',index:'<%= userColNames[1]%>',
width:130,sortable:true,editable:true},
{name:'<%= userColNames[2]%>',index:'<%= userColNames[2]%>',
width:100,sortable:true,editable:true,editrules:{required:true},formoptions:{rowpos:3, elmprefix:'*'}},
{name:'<%= userColNames[3]%>',index:'<%= userColNames[3]%>',
width:180,sortable:true,editable:true,editrules:{email:true,required:true},formoptions:{rowpos:4, elmprefix:'*'}},
{name:'<%= userColNames[4]%>',index:'<%= userColNames[4]%>',
width:100,sortable:true,editable:true},
{name:'<%= userColNames[5]%>',index:'<%= userColNames[5]%>',
width:100,sortable:true,editable:true},
],
pager: '#pager1',
rowNum:50,
height:'auto',
//rowList:[10,20,30],
loadonce: true,
sortname:'<%= userColNames[0]%>',
viewrecords: true,
editurl:'<%=request.getContextPath()%>/userJqGrid?q=1&action=addData&userCookie=<%= encodedCookie%>',
caption: 'User Grid',
ondblClickRow: function(rowid) {
$("#userList").jqGrid('editGridRow',rowid, userEditParam);
return;
}
});
$("#userList").jqGrid('navGrid',"#pager1",{add:true,edit:true,del:true});
$("#userList").jqGrid('gridResize', { minWidth: 450, minHeight: 150});
我尝试添加以下代码来重新加载
$("#userList").jqGrid('setGridParam',{datatype:xml}).trigger('reloadGrid')
有人可以帮忙吗?
对我有用的解决方案
$("#userList").jqGrid('navGrid',"#pager1",{add:true,edit:true,del:true,refresh:true,
beforeRefresh: function() {
$("#userList").jqGrid('setGridParam',{datatype:xml}).trigger('reloadGrid');
}},
{
afterSubmit: processAddEdit,
closeAfterAdd:true,
closeAfterEdit:true
},{
aftersubmit:processAddEdit,
closeAfterAdd:true,
closeAfterEdit:true
});
function processAddEdit() {
$("#userList").jqGrid('setGridParam',{datatype:xml}).trigger('reloadGrid');
return[true,'']; //no error
}
最佳答案
正确的是datatype:'xml'
,而不是datatype:xml
。所以代码就像
$("#userList").jqGrid('setGridParam', {datatype:'xml'})
.trigger('reloadGrid', [{page:1}]);
应该可以工作。请参阅here有关 reloadGrid
附加参数的说明。
更新:从您的评论中,我希望我知道您在实现方面存在问题。如果我现在理解正确,您希望导航栏中的“重新加载网格”按钮从服务器重新加载网格。为此,您应该使用您的实现重新定义标准“重新加载网格”按钮,该按钮执行我在答案中包含的代码(见上文)。因此,您应该使用 refresh: false
作为 navGrid选项删除标准“重新加载网格”按钮,然后使用 navButtonAdd添加看起来与标准按钮完全相同并具有自定义实现或 onClickButton
事件的新按钮:
var myGrid = $('#userList');
myGrid.jqGrid({
datatype: 'xml',
loadonce: true,
pager: '#pager1',
// ... other parameters which you use
});
myGrid.jqGrid('navGrid', '#pager1', {refresh: false});
myGrid.jqGrid(
'navButtonAdd',
'#pager1',
{
caption: "",
buttonicon: "ui-icon-refresh",
title: $.jgrid.nav.refreshtitle,
onClickButton: function () {
$(this).jqGrid('setGridParam', {datatype:'xml'});
$(this).trigger('reloadGrid', [{page:1}]);
}
}
);
更新 2:要在“添加”和“编辑”操作后强制重新加载网格,您可以使用 afterSubmit
事件,该事件将在接收成功的服务器响应之后但在 reloadGrid
由 jqGrid 制作。
myGrid.jqGrid('navGrid', '#pager1', {refresh: false},
{ // Edit options
afterSubmit: function () {
$(this).jqGrid('setGridParam', {datatype:'xml'});
return [true,'']; // no error
}
},
{ // Add options
afterSubmit: function () {
$(this).jqGrid('setGridParam', {datatype:'xml'});
return [true,'',false]; // no error and no new rowid
}
},
{ // Delete options
afterSubmit: function () {
$(this).jqGrid('setGridParam', {datatype:'xml'});
return [true,'']; // no error
}
}
);
我不确定一般情况下编辑和删除操作后是否确实需要从服务器重新加载网格,但如果服务器未在服务器响应中返回新 ID,则可能需要在添加操作后重新加载 。您可以设置reloadAfterSubmit: false
并在服务器响应中返回新的ID。请参阅this和 this详细答案。
关于jquery - loadonce :true 未发生 jqgrid 的重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7067439/
我有大约 50 条记录,我只想在 jqgrid 中每页显示 10 行。如果我设置 rowNum:10,它只显示 10 条记录,loadOnce:true。我希望实现客户端列搜索,所以我使用了 load
在创建/编辑/删除一行后,我显然需要从服务器刷新网格。我已经检查了奥列格关于重新加载的所有问题,但仍然无法使其工作。我究竟做错了什么?这么简单的事情为什么要搞得这么复杂。 我还想在发布后关闭表单..但
我是使用 jqgrid 的新手。 当新页面加载时,网格正在正确地从数据库加载数据。之后,由于 loadonce: true ,网格不会从数据库重新加载数据以进行添加/编辑/删除。 我的应用组合是JSP
第一次来...所以提前致谢。 我有一个 JQGrid 页面。这是我的 JQGrid(最新版本...昨天下载)设置: $(function() { $("#list").jqGrid({
当我使用指定的选项时,jqGrid 出现问题。当我单击“查找”时,似乎没有任何 react 。 从 jqGrid 文档中,我了解到使用 loadonce 选项时排序和搜索是在本地完成的。排序很好,但搜
我在一个页面中使用两个 jqgrid。第二个网格我使用了 loadonce: true 因为我需要在第二个网格中进行列排序。我需要在服务器回发后重新加载两个网格。 (需要在第二个网格中显示更新的值)。
在 jqGrid 中有属性 loadonce:true 那么我只获取第一页记录。我怎样才能获得第二页和第三页记录。 代码: $(function () { $("#pendingApp
有谁知道如何用asp.net+asmx+jqGrid排序解决这个讨厌的问题。因为,为了从 jqGrid 调用 pagemethods 或 asmx Web 服务,需要像这样进行攻击: datatype
在 jqGrid 中有属性 loadonce:true 然后我只得到首页记录。如何获取第二页和第三页记录。 代码: $(function () { $("#pendingAppgrid
我有一个带有子网格(简单的子网格,而不是网格)的 JQGrid,直到昨天为止都运行良好。然后我发现了强大的标志 loadonce=true,它免费为我提供分页、搜索等功能。但是,由于我启用了加载,一旦
这是正常现象还是我遗漏了什么? 如果我设置 loadonce: true,我的网格仅返回 5 条记录。 但是如果我将其更改为loadonce: false,网格将获取所有记录 我的代码如下。 $("#
我的应用程序中有一个网格。为了填充数据,用户填写表格并提交。服务器响应 JSON 数据,其中包含网格的所有结果(服务器不会再次命中)。 就 jqGrid 而言,设置为 loadonce: true 和
我知道如何使用 JQGrid 上的搜索功能,每次执行过滤或搜索时都将请求发送回服务器。如果您正确编码 php,则可以对列中的数据执行 LIKE 搜索。例如,如果列包含字符串 Hello World 并
我正在尝试使用 jqgrid v4.6 实现工具栏过滤,但无法过滤结果 $('form[name="viewComplaintsForm"] button').click(function(e)
我现在了解到,对客户端进行排序的唯一方法是设置loadonce:true,..但是如果我将其设置为true,那么我将无法导航页面,并且如果我设置的rownum小于数据的数量,它不会显示其他数据。例如,
我正在使用的 jqGrid 源文件在顶部说它的版本为 jqGrid 4.4.0 ,日期为 Date 2012-06-14 在此wiki page它说 trigger(“reloadGrid”), 使用
我是一名优秀的程序员,十分优秀!