Есть ли способ скрыть столбец в таблице jqGrid, но показывать ли его как доступную только для чтения, когда строка редактируется в текстовом редакторе формы?
Скрытые столбцы в jqGrid
Ответ 1
Я просто хочу расширить предложение queen3, применяя следующее трюк:
editoptions: {
dataInit: function(element) {
$(element).attr("readonly", "readonly");
}
}
Сценарий # 1:
- Поле должно быть видимым в сетке
- Поле должно быть видимым в форме
- Поле должно быть доступно только для чтения
Решение
colModel:[
{ name:'providerUserId',
index:'providerUserId',
width:100,editable:true,
editrules:{required:true},
editoptions:{
dataInit: function(element) {
jq(element).attr("readonly", "readonly");
}
}
},
],
ProviderUserId отображается в сетке и отображается при редактировании формы. Но вы не можете редактировать содержимое.
Сценарий №2:
- Поле не должно быть видимым в сетке
- Поле должно быть видимым в форме
- Поле должно быть доступно только для чтения
Решение
colModel:[
{name:'providerUserId',
index:'providerUserId',
width:100,editable:true,
editrules:{
required:true,
edithidden:true
},
hidden:true,
editoptions:{
dataInit: function(element) {
jq(element).attr("readonly", "readonly");
}
}
},
]
Обратите внимание, что в обоих случаях я использую jq для ссылки на jquery вместо обычного $. В моем HTML у меня есть следующий script, чтобы изменить переменную, используемую jQuery:
<script type="text/javascript">
var jq = jQuery.noConflict();
</script>
Ответ 2
Эта функция встроена в jqGrid.
настройте свою функцию сетки следующим образом.
$('#myGrid').jqGrid({
...
colNames: ['Manager', 'Name', 'HiddenSalary'],
colModel: [
{ name: 'Manager', editable: true },
{ name: 'Price', editable: true },
{ name: 'HiddenSalary', hidden: true , editable: true,
editrules: {edithidden:true}
}
],
...
};
Существуют и другие editrules, которые могут быть применены, но эта базовая установка скроет зарплату менеджера в виде сетки, но позволит редактировать, когда отображается форма редактирования.
Ответ 3
Вы можете использовать следующий код, чтобы скрыть столбец таблицы.
JQuery("tableName").hideCol("colName");
И вы можете использовать следующий код, чтобы показать его снова.
JQuery("tableName").showCol("colName");
Для вашего вопроса вы можете вызвать код hideCol() на document.ready(), и вы можете привязать код showCol() в событии редактирования/щелчка диалога.
Ответ 4
Этот поток довольно старый, я полагаю, но в случае, если кто-то еще сталкивается с этим вопросом... Мне пришлось захватить значение из выбранной строки таблицы, но я не хотел показывать столбец, из которого была строка. Я использовал hideCol, но имел ту же проблему, что и Энди, где это выглядело беспорядочным. Чтобы исправить это (назовите это взломом), я просто переустанавливаю ширину сетки.
jQuery(document).ready(function() {
jQuery("#ItemGrid").jqGrid({
...,
width: 700,
...
}).hideCol('StoreId').setGridWidth(700)
Поскольку мои ширины строк являются автоматическими, когда я reset ширина таблицы reset ширина столбца, но исключена скрытая, поэтому они заполнили пробел.
Ответ 5
Попробуйте использовать edithidden: true, а также do
editoptions: { dataInit: function(element) { $(element).attr("readonly", "readonly"); } }
Или посмотрите jQGrid wiki для пользовательского редактирования, вы можете настроить любой тип ввода, даже метку, я думаю.
Ответ 6
Чтобы скрыть столбец сетки
jQuery("#validGrid").jqGrid('hideCol',str);
Ответ 7
Это немного старый, этот пост. Но это мой код, чтобы показать/скрыть столбцы. Я использую встроенную функцию для отображения столбцов и просто отмечаю их.
Функция, отображающая отображаемые столбцы/скрытые столбцы. #jqGrid - это имя моей сетки, а columnChooser - это выборщик столбцов jqGrid.
function showHideColumns() {
$('#jqGrid').jqGrid('columnChooser', {
width: 250,
dialog_opts: {
modal: true,
minWidth: 250,
height: 300,
show: 'blind',
hide: 'explode',
dividerLocation: 0.5
} });