的實施似乎我清楚。您只需在服務器端設置一個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>
完成了。正如你指定的那樣,我嘗試了這種方式,因爲我正在檢查onSelectRow事件函數中的用戶類型,因爲用戶類型是從JSP scriptlet即服務器端代碼中取回的。請看看我的@updated代碼,謝謝你的回覆。 –
@Bhagwat:不客氣! – Oleg