2010-03-03 3 views
3

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

Например:

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), но, к сожалению, они будут доступны для редактирования пользователем. Я хочу скрыть эти поля, чтобы пользователь не мог их редактировать.

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

ответ

5

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 функцию (прокрутите вниз до раздела Events). См. this question.

Похоже, вы хотите, чтобы столбцы отображались в представлении, но не редактировались. Если вы установили 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'); 
} 
+0

' editrules', похоже, не работает, но 'afterShowForm' (что вроде хаки). – Fragsworth

+0

Хорошо, нашел менее запутанный путь. См. Редактирование. Приходит к использованию настраиваемого поля, используя 'edittype: 'custom''. – cmptrgeekken

0

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

beforeShowForm: function (formid) 
{ 
    $("#tr_name",formid).hide(); 
}, 
+0

Можете ли вы показать весь сценарий. У меня возникают некоторые проблемы с реализацией этого. // $ ("# JQGrid1") jqGrid ({ // // beforeShowForm:.. Функция (FormID) {// $ ("# CREATE_DATE") скрыть(); //} // }); Это как оно должно быть реализовано? Спасибо! – OBL

2

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

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

return { Id: row.Id }; 
0

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

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

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

Приветствия

Пол

+1

Жаль, что это не сработает. вы не можете передавать динамические значения, подобные этому (вместе с url) в jqgrid. Для передачи динамических значений вам необходимо использовать функцию «PostData». – vissu

6

Это теперь поддерживается в jqGrid с помощью атрибута edithidden:

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

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

+0

Любая идея, какая версия была реализована? – StockB

0

попробовать это:

colModel: [ 
    { name: 'your_field_name', editable: true, hidden: true, search:false, editoptions: {style:'display:none;'}}, 
] 
0

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

colModel: [ 
    { name: 'your_field_name', editable: true, hidden: true, search:false, editoptions: {'disabled':'disabled'}}, 
] 
Смежные вопросы