我有一个从处理程序获取2行的网格,我尝试识别键列,这里我将其从id重命名为xqz和rr45。当我编辑一个Cell时,我的handdler得到的id为1,它似乎是rownumber而不是实际的id。
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQgrid - ASPX</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<!--<script src="http://asp2d:1138/jquery-1.8.3.js"></script>-->
<!--<script src="http://asp2d:1138/jquery-ui-1.9.2.custom.js"></script>-->
<script type="text/javascript" src="http://asp2d:1138/grid.locale-en.js"></script>
<script type="text/javascript" src="http://asp2d:1138/jquery.jqGrid.min.js"></script>
<link rel="stylesheet" type="text/css" media="screen" href="http://asp2d:1138/jquery-ui-1.9.2.custom.css" />
<link rel="stylesheet" type="text/css" media="screen" href="http://asp2d:1138/ui.jqgrid.css" />
<script>
$(function() {
$("#list").jqGrid({
url: "/capplanning/SitePages/jsonhandler.aspx?wherefrom=Category One",
datatype: "json",
mtype: "GET",
colNames: ["xyz", "category_type", "category_value"],
colModel: [{
name: "rr45",
sortable: true,
key: true,
editable: true,
hidden: true,
edithidden: false
}, {
name: "category_type",
sortable: true,
editable: false
}, {
name: "category_value",
sortable: true,
editable: true
}],
pager: "#pager",
caption: "Category One",
loadonce: "true",
height: "100%",
cellEdit: true,
cellsubmit: "remote",
cellurl: "/capplanning/SitePages/jsonhandler.aspx?editedgrid=editcategory1",
autowidth: true,
rowNum: 9999,
gridview: true,
multiselect: false
/*rowList:[10,15,20]*/
});
$("#list").jqGrid('filterToolbar', {
stringResult: true,
searchOnEnter: false
});
$("#list").jqGrid('navGrid', '#pager', {
edit: false,
add: true,
del: true
});
$("#list").jqGrid('navButtonAdd', '#pager', {
caption: '',
title: 'Show/Hide Filters',
buttonicon: 'ui-icon-arrowthickstop-1-e',
onClickButton: function() {
this.toggleToolbar();
if ($.isFunction(this.p._complete)) {
if ($('.ui-search-toolbar', this.grid.hDiv).is(':visible')) {
$('.ui-search-toolbar', this.grid.fhDiv).show();
} else {
$('.ui-search-toolbar', this.grid.fhDiv).hide();
}
this.p._complete.call(this);
fixPositionsOfFrozenDivs.call(this);
}
}
});
$("#list")[0].toggleToolbar();
});
</script>
</head>
<body>
<table id="list">
<tr>
<td></td>
</tr>
</table>
<div id="pager"></div>
</body>
</html>
JSON
{
"rows": [{
"id": "2",
"cell": ["2", "CategoryOne", "Maintenancedd"]
}, {
"id": "3",
"cell": ["3", "CategoryOne", "Maintenance"]
}, {
"id": "4",
"cell": ["4", "CategoryOne", "New Growth"]
}]
}
在我的编辑处理程序中,它出现
Key = category_value Value = Maintenance
Key = id Value = **1**
Key = oper Value = edit
答案 0 :(得分:1)
我认为这里有一个明确的错误,jqGrid加载行id作为序号而不是通过主键列绑定的字段,为了解决这个问题,我已经实现了只能被描述为脏黑客的东西!
首先,在绑定网格模型时创建客户端事件处理程序:
ClientSideEvents cev = new ClientSideEvents() {
GridInitialized = "loadComplete"
};
&#34; loadComplete&#34;是我的主.js堆栈中的一个javascript函数:
function loadComplete() {
$('tr.jqgrow[role="row"]').each(function (i, e) {
var Id = $(e).children().first().attr("title");
$(e).attr("id", Id);
});
};
这基本上允许网格完成其渲染,然后通过查找第一列(假设这是ID字段,在我的情况下,它总是如此)并设置行&#34; id&#34;属性为&#34;标题&#34;第一个子节点中的属性(确实获得了正确的值),从而将行ID设置为正确的值
这个网格真的是一堆狗便便.. :(