Реализация кажется мне понятной.Вам нужно просто установить на стороне сервера переменную 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}, ....);
}
Если вы используете трюк, описанный в ответ (см. демо ), выможет вызвать 'navGrid' и создать все кнопки навигатора, но сделать видимыми только выбранные кнопки в зависимости от прав пользователя.
В случае использования встроенного редактирования вы можете использовать что-то вроде
onSelectRow: function (id) {
if (!my.inlineEditing) {
return;
}
//...
$(this).jqGrid('editRow', id, ...);
}
Инициализация переменной my
может отличаться в зависимости от технологии, которую вы используете на стороне сервера.В простейшем случае переменная my
может быть определена как global на странице, поэтому она может быть определена на верхнем уровне.В случае 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>