2010-11-09 3 views
2

Я изо всех сил пытаюсь выбрать и манипулировать выпадающим списком из jqGrid.jqGrid select dropdown element

jQuery("#grid")... 

colModel: [... 

{ name: 'StateId', index: 'StateId', width: 350, align: 'center', stype: 'select', 
    edittype: 'select', searchoptions: { sopt: ['eq'] }, 
    editoptions: { value: controllerMethods.GetStates()} },... 

. 
. 
.  

jQuery("#grid").jqGrid('filterToolbar', { stringResult:true, searchOnEnter:false }); 

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

Любая помощь приветствуется!

ответ

3

Вы можете использовать дополнительный ориентировочная цена опция

searchoptions:{ 
    dataInit:function(el){ 
     $("option:contains("+defaultCategory+")",el).attr("selected", "selected"); 
     setTimeout(function(){ 
      $(el).trigger('change'); 
     },500); 
    } 
} 

где defaultCategory является вариант, который вы хотите иметь значение по умолчанию. См небольшой демо here.

+0

Большое спасибо! Ваше решение работает! Однако мне также было бы интересно узнать, как получить ссылку на «el», то есть на раскрывающийся список, но вне события dataInit. Одна вещь, которая приходит мне в голову, заключается в том, чтобы уловить ссылку в событии dataInit и назначить ее внешней переменной для последующего использования. Тем не менее, это зависит от события dataInit :( – bignermo

+0

Причина сохранения значения ссылки 'el' во внешней переменной будет работать. Мне кажется, что вы можете сделать то же самое только с' $ ("# gs_StateId") ', потому что id элементов из панели инструментов фильтра будет построен из префикса 'gs_' и имени соответствующего столбца. – Oleg

0

Я полагаю, что я нашел способ:

var stateIdDropDown = $('#gs_StateId'); 

В этом случае gs_StateId является DOM Id элемента (обнаруженного при помощи Firebug).

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

var stateIdDropDown = $('#myGrid>whatever...StateId'); 

Спасибо всем.

Приложение 1:

. 
. 
. 
//Preset default search filter. 
    SetGridSearchDefaults: function (grid) 
    { 
     var gridInfo = new Object(); 

     var postData = grid.jqGrid('getGridParam', 'postData'); 

     if (postData.filters==null) 
     { 
      postData.filters = '{"groupOp":"AND","rules":[{"field":"StateId","op":"eq","data":"1"}]}' 

      grid.jqGrid('setGridParam', { postData: postData }); 
     } 
    }, 

    //Pre-Select dropdowns. 
    PreSelectDropDowns: function() 
    { 
     $('select#gs_StateId').val('1');//Status New 
    }, 

. . .

SetGridSearchDefaults вызывается для Grid's beforeRequest событие!

PreSelelectDropDown вызывается на Grid's gridComplete событие, пожалуйста, не фрагмент!

jQuery("#grid").jqGrid({ 
    . 
    . 
    . 
gridComplete: function() { 
     if (firstLoad == true) { 
          commonMethods.PreSelectDropDowns(); //Pre-Select filter dropdowns. 
          firstLoad = false; 
         } 
    . 
    . 
    . 

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

+0

Пожалуйста, не добавляйте новую информацию в новый ответ. Трудно ее найти. Почему вы не знаете, t like '$ ('# gs_StateId')'? Вы не можете использовать синтаксис, например '$ ('# myGrid> ...)', потому что панель инструментов ** вне ** '# myGrid'. Она находится внутри' # gview_myGrid'. Старые ответы о поиске/фильтрации http://stackoverflow.com/questions/3974324/jqgrid-using-multiple-methods-to-filter-data, http://stackoverflow.com/questions/3981874/multiple-search -with-multiplefields-by-default и http://stackoverflow.com/questions/3989786/jqgrid-clear-search-criteria показывает, как 'postData' используется при поиске и может быть intrestring – Oleg

+0

Лучшие в Праге! У меня есть лучшие воспоминания о городе. Я посетил его много лет назад, когда был студентом. – Oleg