2015-10-16 3 views
0

Мне удалось отобразить кнопку (имя: «SelectStores»), но она находится в режиме по умолчанию и не соответствует остальной форме в цвете и форме. Как изменить эти свойства?Как изменить характеристики кнопок в форме jqgrid?

спасибо.

colModel:[{name: "PCROWID", width: 60, align: "center", editable:true, hidden:true, editoptions: {readonly:true}}, 
      {name: "PCST", width: 60, align: "center", editable:true, editoptions: {readonly:true}, editrules: {required:true, number:false}}, 
      {name: "PCLSEQ", width: 60, align: "center", editable:true, editoptions: {readonly:true}, editrules: {required:true, number:true}, formatter:'number', formatoptions:{decimalPlaces: 0, defaultValue: '0'}}, 
      {name: "PCACTIVE", width: 60, align: "center", editable:true, editrules: {edithidden:true}, edittype:"checkbox", editoptions: {value:"Y:N"}}, 
      {name: "SelectStores", width: 80, align: "center", editable:true, hidden:true, editrules: {edithidden:true}, edittype:"button", editoptions: {value:"Select Stores"}}, 

ответ

0

Этот набор данных представляет собой массив объектов. Таким образом, вы можете получить доступ к каждому объекту по его индексу в массиве, начиная с 0 для первого объекта.

Итак:

colModel[0] = { 
      name: "PCROWID", 
      width: 60, 
      align: "center", 
      editable: true, 
      hidden: true, 
      editoptions: { 
       readonly: true 
      } 

Таким образом, объект, который вы пытаетесь получить доступ в 4-м индексе, и могут быть доступны по адресу:

colModel[4] 

Оттуда, каждое отдельное свойство можно получить используя точечную нотацию:

colModel[4].name // this would return "Select Store" 
    colModel[4].align  // this would return "center" 
    colModel[4].editrules.edithidden // returns true 

Таким образом, вы можете также присвоить новые значения таким же образом:

colModel[4].align = "left" 
colmodel[4].width = 60 

Имейте в виду, что это работает только в том случае, если ваш массив объектов остается в том же порядке. Если вы добавите новый элемент в начало вашего массива, элемент, который вы пытаетесь получить, больше не будет иметь индекс 4, и внезапно вы будете редактировать неправильный элемент.

Так что, если они все однородные и должны иметь то же свойство, вы можете рассмотреть возможность сделать что-то вроде петли, либо нормализовать все свойства всех объектов, или, чтобы найти тот, который вы ищете:

for(var i = 0, length = colModel.length; i < length; i++){ 
    // set all widths to 60 
    colModel[i].width = 60; 

    // set only the "SelectStores" button alignment to "left" 
    if(colModel[i].name === "SelectStores"){ 
     colModel[i].align = "left"; 
    } 
} 

В зависимости от ваших конкретных целей существуют более эффективные способы сделать это, но это выполнит свою работу.

+0

Спасибо за подробный ответ. Это очень помогает мне понять конструкцию jqgrid. У меня есть следующий вопрос. Где примеры кода: ("colModel [4] .align =" left ""), который вы указали, входит в общий формат? –

0

Мне нужно уточнить мой вопрос. Кнопка, которую я пыталась изменить, была в форме редактирования не в самой сетке. Этот столбец скрыт в сетке.

Я нашел решение, которое находится в разделе редактирования моего кода, где я могу напрямую работать с формой редактирования.

Вот мое решение:

$('#SelectStores').click(function() { 
    ShowExtendedData(); 
}).addClass("fm-button ui-state-default ui-corner-all"); 
Смежные вопросы