我需要我的ro基于两个ID,Userid和certID。当添加和更新它工作正常,但删除时我需要这两个ID来删除我在数据库中的记录,但所有来自POST数据的是" id"和" oper",我需要将额外的certId添加到帖子数据。这是我的代码:
<!DOCTYPE HTML>
<html>
<head>
<title>jQGrid PHP inline Editing Tutorial</title>
<link type="text/css" rel="stylesheet" href="plugins/jquery-ui/jquery-ui.min.css">
<!--<link rel='stylesheet' href='plugins/jqGrid/css/ui.jqgrid.css'/>-->
<link type="text/css" rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" media="screen" href="plugins/jqGrid/css/ui.jqgrid-bootstrap.css" />
<script type="text/ecmascript" src="plugins/jquery/jquery-2.1.0.min.js"></script>
<script type="text/ecmascript" src='plugins/jqGrid/js/i18n/grid.locale-en.js'></script>
<script type="text/ecmascript" src='plugins/jqGrid/js/jquery.jqGrid.min.js'></script>
<script type="text/ecmascript" src="plugins/bootstrap-datepicker/js/bootstrap-datepicker.js"></script>
<script type="text/ecmascript" src="plugins/bootstrap-typehead/js/bootstrap3-typeahead.min.js"></script>
<link rel="stylesheet" type="text/css" media="screen" href="plugins/bootstrap-datepicker/css/bootstrap-datepicker.css" />
<meta charset="utf-8" />
<script>
$.jgrid.defaults.width = 780;
$.jgrid.defaults.responsive = true;
$.jgrid.defaults.styleUI = 'Bootstrap';
</script>
</head>
<body>
<div style="margin-left:20px;">
<table id="jqGrid"></table>
<div id="jqGridPager"></div>
</div>
<script type="text/javascript">
$(document).ready(function () {
$("#jqGrid").jqGrid({
url: 'getUserCertList.php',
editurl: 'UserCertUpdate.php',
mtype: "GET",
datatype: "json",
page: 1,
colModel: [
{ label: 'userID', name: 'id', editable: false, editrules: { edithidden: true }, hidden: true, width: 40, align: 'left' },
{ label: 'certificationid', name: 'certificationid', key: true, editable: false, editrules: { edithidden: true }, hidden: true, width: 40, align: 'left' },
{
label: 'Certification',
name: 'certid',
width: 200,
editable: true,
edittype: "select",
editrules : { required: true},
editoptions : {dataUrl: "getCertList.php"}
},
{
label : 'Date Certified',
name : 'dateCertified',
width : 80,
align : 'center',
editable : true,
sortable : true,
sorttype : 'date',
edittype : "text",
editrules : { required: true},
editoptions : {
// dataInit is the client-side event that fires upon initializing the toolbar search field for a column
// use it to place a third party control to customize the toolbar
dataInit: function (element) {
$(element).datepicker({
autoclose: true,
format: 'yyyy-mm-dd',
orientation : 'auto bottom'
});
}
}
},
{
label : 'Verified',
name : 'verified',
width : 40,
align : 'center',
sorttype : "number",
editable : false,
edittype : "checkbox",
editoptions : { value: "True:False" },
formatter : "checkbox", formatoptions: { disabled: true }
},
],
loadonce : true,
//onSelectRow: editRow, // the javascript function to call on row click. will ues to to put the row in edit mode
viewrecords: true,
height: 300,
rowNum: 20,
rownumbers: true, // show row numbers
rownumWidth: 35, // the width of the row numbers columns
pager: "#jqGridPager"
});
$('#jqGrid').navGrid("#jqGridPager", {edit: false, add: false, del: true, refresh: true, view: true, search:false},
{delData: {
name: function() {
var cert_id = $('#jqGrid').jqGrid('getGridParam', 'selrow');
var value = $('#jqGrid').jqGrid('getCell', cert_id, 'colName');
return value;
}
}
});
$('#jqGrid').inlineNav('#jqGridPager',{edit: false,add: true,del: true,cancel: true,
editParams: {keys: true,},
addParams: {keys: true},
});
});
</script>
</body>
</html>
答案 0 :(得分:3)
网格有两个隐藏的列:'id'
(label: 'userID'
)和'certificationid'
,您key: true
列使用'certificationid'
。
如果我正确理解您的问题,则来自两个值userID
和certificationid
的组合指定了需要删除的项目。在这种情况下,最好更改从服务器返回的数据,并使用userID + "_" + certificationid
作为服务器响应中id
属性的值。顺便说一句,网格不需要隐藏'id'
列。 id
值将用于指定行id
元素的<tr>
属性值。因此,不需要在隐藏列的<td>
中保存相同的信息。
我无法在服务器端进行建议的更改,然后您可以使用onclickSubmit
回调来扩展数据。您提出的代码在编辑表单的选项中使用了delData
,这是错误的:
$('#jqGrid').navGrid("#jqGridPager",
{edit: false, add: false, del: true, view: true, search: false},
{}, // edit parameters
{}, // add parameters
{ // del parameters
onclickSubmit: function (options, delId) {
// get the vale from 'id' (label: 'userID') column
// and extend the postdata with name property
return {
name: $(this).jqGrid('getCell', delId, 'id')
};
}
}
);