Подтвердить что ты не робот

Скрытые столбцы в jqGrid

Есть ли способ скрыть столбец в таблице jqGrid, но показывать ли его как доступную только для чтения, когда строка редактируется в текстовом редакторе формы?

4b9b3361

Ответ 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
            } });