jqGrid - как иметь скрытые поля в форме редактирования - PullRequest
3 голосов
/ 03 марта 2010

Я хочу иметь возможность передавать поля в форму редактирования, когда пользователь пытается редактировать строку, но я не хочу, чтобы эти поля были редактируемыми - я хочу, чтобы они просто были скрыты, чтобы они по-прежнему отправлялись в сервер.

Например:

colModel :[
    {label: 'Game ID', name: 'game_id', editable:true},
    {label: 'Component ID', name: 'component_id', editable:true},
    {label: 'Table ID', name: 'table_id', editable:true},
],

Это передаст их в форму редактирования (из-за editable:true), но, к сожалению, они будут доступны для редактирования пользователем. Я хочу скрыть эти поля, чтобы пользователь не мог их редактировать.

Как я могу это сделать?

Ответы [ 7 ]

7 голосов
/ 25 марта 2014

Это теперь поддерживается в jqGrid через атрибут edithidden:

colModel: [
    { name: 'optionValue', key: true, index: 'optionValue', width: 55, editable: true,     hidden: true, editrules: { edithidden: false } },

Установите значение false, чтобы скрыть его в форме добавления / редактирования.

5 голосов
/ 03 марта 2010

EDIT

Хорошо, получается, что вы можете определить пользовательский элемент как edittype . Для вашей ситуации вы должны сделать следующее:

colModel :[
    {label: 'Game ID', name: 'game_id', editable:true, edittype:'custom',editoptions:{custom_element:myelem,custom_value:myval}},
    {label: 'Component ID', name: 'component_id', editable:true, edittype:'custom',editoptions:{custom_element:myelem,custom_value:myval} },
    {label: 'Table ID', name: 'table_id', editable:true, edittype:'custom',editoptions:{custom_element:myelem,custom_value:myval}}
]

Тогда вы бы определили myelem и myval следующим образом:

function myelem(value,options){
   return $('<input type="text" value="'+value+'" disabled="disabled"/>');
}

function myval(elem){
    return elem.val();
}

Это создаст отключенное текстовое поле и выглядит менее хакерским, чем afterShowForm.

ORIGINAL

Если вы используете элемент управления формы редактирования (не встроенное редактирование), похоже, что вы должны предоставить функцию afterShowForm (прокрутите вниз до раздела События). См. этот вопрос .

Похоже, вы хотите, чтобы столбцы отображались на виде, но не были доступны для редактирования. Если вы установите editable:true, то пользователь может редактировать поле, несмотря ни на что. В конечном итоге вам придется отключить / установить элемент формы на скрытый, чтобы пользователь не мог изменить его значение. afterShowForm будет выглядеть примерно так:

afterShowForm: function(eparams){
    // change the selector appropriately
    $('#jqGrid input[name=game_id]').attr('type','hidden');
   // or $('#jqGrid input[name=game_id]').attr('disabled','disabled');
}
2 голосов
/ 21 октября 2010

Я думаю, что более чистым способом является событие onclickSubmit - вы можете добавить дополнительные поля для отправки.

var gr = jQuery("#table").jqGrid('getGridParam', 'selrow');
var row = jQuery("#table").getRowData(gr);

return { Id: row.Id };
0 голосов
/ 06 февраля 2017

Если вы можете доверять конечному пользователю, вы можете просто добавить атрибут editoptions и установить для отключенного параметра значение disabled следующим образом:

colModel: [
    { name: 'your_field_name', editable: true, hidden: true, search:false, editoptions: {'disabled':'disabled'}},
]
0 голосов
/ 23 декабря 2015

попробуйте это:

colModel: [
    { name: 'your_field_name', editable: true, hidden: true, search:false, editoptions: {style:'display:none;'}},
]
0 голосов
/ 16 марта 2012

Если это информация для передачи в функции редактирования базы данных, вы можете просто передать дополнительные параметры через URL

editurl:"database_edit.asp?user_id="+user_id

Не обязательно лучший способ - просто другой.

Приветствия

Пол

0 голосов
/ 07 марта 2010

Попробуйте это:

beforeShowForm: function (formid)
{
    $("#tr_name",formid).hide(); 
},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...