我正在使用带有json服务的JQGrid来列出所有数据库用户的成员资格信息,因此网格的url指向我的json服务和方法。到目前为止一切正常,我可以添加和编辑用户并修改数据,它可以节省很多。但是,删除DB用户是另一个故事,因为Membership.DeleteUser将用户名作为其参数。在添加或编辑模式下,JQGrid似乎只能传回可编辑的参数。但是当你试图删除它时似乎不允许返回任何参数,我觉得很奇怪。我刚刚开始使用JQGrids所以我可能只是很厚:-)。请问有谁能告诉我如何做到这一点?我将用户名作为JQGrid本身的列。到目前为止,我尝试过各种各样的事情:
url:'misc / myservice.svc / AddEditDeleteGridRow?UserName ='+ $('#MyGridTbl')。getCell('selrow','UserName')
在navGrid的删除部分。我也尝试在select行事件中设置URL,但我发现它需要重新加载才能将其插入到网格中,当发生这种情况时,选定的行会丢失,从而使对象失败。我只需要能够访问/获取json服务中的用户名,以便将其传递给Membership.DeleteUser。我一直在网上搜索,似乎找不到任何东西。
这是我正在使用的JQGrid。 json服务基本上只有GetData,它返回JQGridJSONData(json对象数据集)和AddEditDeleteGridRow方法,两者都是公共的。所有列数据都被发送到json服务以进行添加和编辑,但没有为删除操作发送任何内容。
只是为了澄清我需要json服务中服务器端的UserName。
$('#MyGrid').jqGrid({
url: 'Misc/MyjsonService.svc/GetData',
editurl: 'Misc/MyjsonService.svc/AddEditDeleteGridRow',
datatype: 'json',
colNames: ['UserId', 'UserName', 'Email Address', 'Password Last Changed', 'Locked'],
colModel: [
{ name: 'UserId', index: 'UserId', hidden:true, editable: true, editrules:{edithidden: true}},
{ name: 'UserName', index: 'UserName', editable: true, width: 200, sortable: false, editrules: { required: true} },
{ name: 'Email Address', index: 'Email', editable: true, width: 500, sortable: false, editrules: { email: true, required: true} },
{ name: 'Password Last Changed', index: 'LastPasswordChangedDate', editable: false, width: 200, sortable: false, align: 'center' },
{ name: 'Locked', index: 'IsLockedOut', sortable: false, editable: true, edittype: "checkbox", formatter: 'checkbox', align: 'center' }
],
rowNum: 20,
hidegrid: false,
rowList: [20, 40, 60],
pager: $('#MyGridPager'),
sortname: 'UserName',
viewrecords: true,
multiselect: false,
sortorder: 'asc',
height: '400',
caption: 'Database Users',
shrinkToFit: false,
onPaging: function(pgButton) {
this.DBUserId = null;
},
onSelectRow: function(Id) {
if (Id && Id !== this.DBUserId) {
this.DBUserSelect(Id);
}
},
loadComplete: function() {
if (this.DBUserId)
this.DBUserSelect(this.DBUserId, true);
},
gridComplete: function() {
var grid = $('#MyGrid');
var body = $('#AvailableDBUsersArea');
if ((grid) && (body)) {
grid.setGridWidth(body.width() - 10);
//keep the grid at 100% width of it's parent container
body.bind('resize', function() {
var grid = $('#MyGrid');
var body = $('#AvailableDBUsersArea');
if ((grid) && (body)) {
grid.setGridWidth(body.width() - 2);
}
});
}
}
}).navGrid('#MyGridPager',
{ add: true, edit: true, del: true, refresh: false, search: false }, //general options
{
//Options for the Edit Dialog
editCaption: 'Edit User',
height: 250,
width: 520,
modal: true,
closeAfterEdit: true,
beforeShowForm: function(frm) { $('#UserName').attr('readonly', 'readonly'); },
beforeShowForm: function(frm) { $('#UserId').removeAttr('readonly'); },
beforeShowForm: function(frm) { $('#UserId').attr('readonly', 'readonly'); }
},
{
//Options for the Add Dialog
addCaption: 'Add User',
height: 250,
width: 520,
modal: true,
closeAfterAdd: true,
beforeShowForm: function(frm) { $('#UserName').removeAttr('readonly'); },
beforeShowForm: function(frm) { $('#UserId').removeAttr('readonly'); },
beforeShowForm: function(frm) { $('#UserId').attr('readonly', 'readonly'); }
},
{
//Delete options
width: 350,
caption: 'Delete User',
msg: 'Are you sure you want to delete this User?\nThis action is irreversable.'
},
{} //Search options
);
答案 0 :(得分:2)
有一些方法可以向删除网址添加其他参数。定义jqGrid会很有帮助,尤其是colModel。
如果你有一个隐藏列,例如使用可以使用
hidden: true, editable: true, editrules: { edithidden: false }, hidedlg: true
参数。然后在编辑对话框中看不到隐藏列,但将发送列的值。
另一种方法是您可以选择是否需要修改URL以发送删除请求。您可以定义navGrid
的参数(参见http://www.trirand.com/jqgridwiki/doku.php?id=wiki:navigator#how_to_use上的prmDel
参数}),如下所示
{ onclickSubmit: function(rp_ge, postdata) {
rp_ge.url = 'misc/myservice.svc/AddEditDeleteGridRow?UserName=' +
$('#MyGridTbl').getCell (postdata, 'UserName');
}
}