我在删除jqGrid中的行时遇到了一些问题。
我的行包含两个主键,即email和idms_module。删除行需要这两个键,因为一个电子邮件可以有两个或更多idms_module。
这是语法:
jQuery("#grid-uac").jqGrid({
mtype:'GET',
url:'functions/get_useraccess.php',
editurl:'functions/edit_useraccess.php',
datatype: "JSON",
colNames:['User Email','Module Access','Level Access'],
colModel:[
{name:'user_email', width:300, editable:true, key:true},
{name:'module_access', width:550,editable:true, key:true,edittype:'select',editoptions:{dataUrl:'functions/get_modusracc.php'}},
{name:'level_access',width:100,editable:true,edittype:'select',editoptions:{value:"0:read only;1:read write"}}
],
loadComplete: function () {
alert("OK");
},
loadError: function (jqXHR, textStatus, errorThrown) {
alert('HTTP status code: ' + jqXHR.status + '\n' +
'textStatus: ' + textStatus + '\n' +
'errorThrown: ' + errorThrown);
alert('HTTP message body (jqXHR.responseText): ' + '\n' + jqXHR.responseText);
},
rowNum:10,
rowList:[5,10,15],
pager: '#pager-uac',
sortname: 'user_email',
viewrecords: true,
jsonReader: **{id: "user_email", id2 or some var : "module_access"}**,
sortorder: "asc",
gridview: true,
autoencode:true,
caption:"Inventory User Access Role"
});
例如,我想删除一行,其中包含电子邮件:admin@test.com和idms_module:6
php代码的一部分是:
$email = $_REQUEST['id'];
$modules= $_REQUEST['another var'];
$query = DELETE FROM table WHERE email= $email AND module = $modules
我已成功收到来自身份证的电子邮件,但对如何获取'另一个变种'没有任何想法
答案 0 :(得分:1)
首先,关于数据库设计的一个常见评论。通常,一个在数据库中使用整数值。在定义此类列时,会使用IDENTITY
或AUTO_INCREMENT
个字词。一般使用整数列作为PRIMARY KEY
。一个额外添加UNIQUE CONSTRAINT
的列不能包含重复项。 UNIQUE CONSTRAINT
在列上添加索引,以便按列快速搜索。我认为我在生产数据库中使用的数据库中的所有表都遵循该规则。
您无法在服务器端更改任何内容,然后您可以执行以下操作。您不能将该属性key:true
更多地用作colModel
的一列。您不能在user_email
之类的列中使用它,如果您可以将更多行作为相同数据的行。您可以做的是例如:使用由id
,user_email
值和一些分隔符组成的组合module_access
值。例如,如果是"test@mydomain.com"
和"module1"
,您可以使用test@mydomain.com@module1
作为ID。第二个@
无法通过电子邮件发送,您可以将其用作分隔符。另一种编码变体将是Base64编码(或仅HEX编码)值user_email
,字符_
和Base64编码(或HEX编码)值module_access
。 jqGrid将在删除操作期间向您发送rowid,您将能够将rowid解码为user_email
和module_access
。
您拥有的另一个选项是使用任何 rowid,但同时将'user_email'
和'module_access'
与rowid一起发送。您可以使用serializeDelData
或onclickSubmit
回调(请参阅the documentation)或delData
来扩展数据。回调将rowid作为输入。您可以使用getCell
或getRowData
重试'user_email'
和'module_access'
,只需扩展将发送到服务器的数据。 The answer显示编辑操作的相同内容。简单重命名回调将显示。您可以在the answer或this one中找到另一个示例。
答案 1 :(得分:0)
您的服务器是否可以提供包含电子邮件+ ID的其他数据属性?然后,您可以将它声明为jqgrid中的id列(隐藏),并让服务器在发送回来时将其取消标记?