我有一个场景,我想对同一个jqgrid应用表单编辑和内联编辑。我有两个用户,例如一个ID管理员,另一个是用户,公司是jqgrid。现在我想为管理员应用表单编辑,为公司Jqgrid应用User的内联编辑。我正在使用JSP scriptlet来指定它是Admin还是User。
有谁知道我怎么能够实现这个呢?
@updated:
onSelectRow: function(id){
var userType='<%=userDetails[1]%>';
alert("userType= " + userType);
if(userType === 'Company Administrator'){
jQuery('#companyList').jqGrid('editRow',id,true,inlineEditSuccess);
}
}
答案 0 :(得分:1)
实施似乎很清楚。您只需在服务器端设置一个JavaScript变量,该变量将描述用户可以使用的编辑模式。你甚至可以允许一些用户编辑,而不允许另一个用户编辑。
如果您不想允许任何形式的表单编辑用于某些用途,您可以测试相应变量的值,并根据值调用navGrid
:
if (my.formEditing) {
$("#list").jqGrid('navGrid', '#pager', ....);
}
或者您可以使用
if (my.formEditingOn) {
$("#list").jqGrid('navGrid', '#pager',
{edit: my.formEditOn, add: my.formAddOn, add: my.formDelOn}, ....);
}
如果您使用the answer中所述的技巧(请参阅the demo),您可以调用'navGrid'并创建所有导航按钮,但只显示选定的按钮取决于用户的权限。
如果使用内联编辑,您可以使用类似
的内容onSelectRow: function (id) {
if (!my.inlineEditing) {
return;
}
//...
$(this).jqGrid('editRow', id, ...);
}
my
变量的初始化可能会有所不同,具体取决于您在服务器端使用的技术。最简单的是,my
变量可以在页面上定义为全局,因此可以在顶层定义。对于ASP.NET MVC,代码可能如下所示:
<%@ Page ...
...
<asp:Content ID="Content3" ContentPlaceHolderID="head" runat="server">
<%-- first include script which defines global my object based on the user rights --%>
<script type="text/javascript">
// initialize my based of Model properties filled
var my = {
inlineEditing : ..,
formEditOn : ...,
formAddOn : ...,
formDelOn : ...
}
</script>
<%-- now include the main script which uses jqGrid --%>
<script type="text/javascript" src="<%= Url.Content(scriptPath) %>"></script>