使用内联编辑将表单编辑到相同的jqgrid

时间:2011-11-17 06:41:02

标签: jqgrid

我有一个场景,我想对同一个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);                      
                }
           }

1 个答案:

答案 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>