Передача динамических параметров для удаления метода URL в JQGrid - PullRequest
0 голосов
/ 29 июня 2010

Я использую JQGrid со службой json для отображения всей информации о членстве пользователей базы данных, поэтому URL-адрес сетки указывает на мою службу и метод json. Пока все работает нормально, я могу добавлять и редактировать пользователей и вносить изменения в данные, и это прекрасно сохраняет. Однако удаление пользователя БД - это еще одна история, поскольку Membership.DeleteUser принимает имя пользователя в качестве параметра. Кажется, JQGrid передает редактируемые параметры только в режиме добавления или редактирования. Но когда вы пытаетесь удалить, это не позволяет вернуть какие-либо параметры, что я нахожу очень странным. Я только начал использовать JQGrids, так что я мог быть толстым :-). Может кто-нибудь сказать мне, как это сделать? У меня есть имя пользователя в виде столбца в самой JQGrid. Я пробовал разные вещи на сегодняшний день:

url: 'misc / myservice.svc / AddEditDeleteGridRow? UserName =' + $ ('# MyGridTbl'). GetCell ('selrow', 'UserName')

в разделе удаления navGrid. Я также попытался установить URL-адрес в событии выбора строки, но я обнаружил, что требуется перезагрузка, чтобы вставить его в сетку, и когда это происходит, выбранная строка теряется и таким образом побеждает объект. Мне просто нужно иметь возможность получить доступ / получить имя пользователя внутри службы json, чтобы передать его в Membership.DeleteUser. Я искал в интернете и, похоже, ничего не нашел.

Вот JQGrid, который я использую. Там сервис json в основном имеет только GetData, который возвращает JQGridJSONData (набор данных объекта json) и AddEditDeleteGridRow, оба являются публичными. Все данные столбца отправляются в службу json для добавления и редактирования, но для операции удаления ничего не отправляется.

Просто чтобы уточнить, мне нужно имя пользователя на стороне сервера в службе json.

   $('#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
    );

1 Ответ

2 голосов
/ 29 июня 2010

Есть несколько способов добавить дополнительные параметры для удаления URL. Было бы полезно иметь определение jqGrid, особенно colModel.

Если у вас есть скрытый столбец, например, использовать можно использовать

hidden: true, editable: true, editrules: { edithidden: false }, hidedlg: true

параметры. Тогда скрытый столбец не будет виден в диалоговом окне редактирования, но будет отправлено значение столбца.

Вы можете выбрать другой способ, если вам нужно изменить URL перед отправкой запроса на удаление. Вы можете определить параметр navGrid (см. prmDel paremeter для http://www.trirand.com/jqgridwiki/doku.php?id=wiki:navigator#how_to_use), который может быть следующим:

{ onclickSubmit: function(rp_ge, postdata) {
      rp_ge.url = 'misc/myservice.svc/AddEditDeleteGridRow?UserName=' +
                  $('#MyGridTbl').getCell (postdata, 'UserName');
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...