Как найти текущую строку в jQgrid? - PullRequest
1 голос
/ 21 июня 2019

У меня есть список пользователей в моей таблице jQgrid, и теперь я хочу создать подсеть, в которой будут перечислены все проекты для выбранного пользователя.

Конечно, у них есть отношения has_many и own_to.

Теперь мой код выглядит следующим образом

jQuery("#datatable").jqGrid({
              url: "/user/details",
              serializeGridData: function(data) {
                  var Data = jQuery.extend(data, {
                      _search: "true",
                      date_from: function() { return jQuery("#date_from").val(); },
                      date_to: function() { return jQuery("#date_to").val();
                  });
                  return jQuery.param(Data);
              },
              ajaxGridOptions: {async: true},
              ajaxCellOptions: {async: true},
              ajaxRowOptions: {async: true},
              mtype: "POST",
              datatype: "local",
              overlay: "false",
              jsonReader: {repeatitems: false},
              loadonce: false,
              pager: '#nav_grid',
              rowEdit: true,
              colNames:['id','Name','Surname', 'Age', 'Company'],
              colModel:[
                  {name:'id',key:true,hidden:true,width:0,index:'id', sorttype:"int", editable: false, align:'left',search:true},
                  {name:'name',width:175,sortable:true, align:'left',search:true},
                  {name:'surname',fixed:true,width:250,sortable:true, align:'left',search:true},
                  {name:'age',width:0,index:'item_code', sorttype:"int", editable: false, align:'left',search:true},
                  {name:'company',width:300,sortable:true, align:'left',search:true},
                  {name:'company',width:100,sortable:true, align:'left',search:true,formatter:'currency'}
              ],

                  jQuery('[id^="gs"]').attr("placeholder", "Search...");
              },
              rownum:500,
              rowNum:500,
              rowList:[500, 1000],
              shrinktofit: true,
              forcefit: false,
              autowidth:true,
              sortname: 'projects',
              sortorder: "desc",
              height: "380",
              ignoreCase: true,
              viewrecords: true,
              caption:"",
              subGrid: true,
              subGridRowExpanded: function(subgrid_id, row_id) {

                  var user_id = jQuery('#data_table').getRowData(row_id)['user_id']
                  var subgrid_table_id;
                  subgrid_table_id = subgrid_id + "_t";
                  jQuery("#"+subgrid_id).html("<table id='"+subgrid_table_id+"' class='scroll'></table><div id='"+ "p_"+subgrid_table_id +"' class='scroll'></div>");
                  jQuery("#"+subgrid_table_id).jqGrid({
                      url:"/user/project_details",
                      datatype: "json",
                      jsonReader: {repeatitems: false},
                      postData:  data,
                      colNames: ['id','Category','Supplier', 'Item Code', 'Name', 'Price', '#','Unit', 'Total Cost (no tax)', 'Total Tax', 'Charges', 'Credits', 'Grand Total'],
                      colModel: [
                          {name:'project_id',key:true,hidden:true,width:0,index:'id', sorttype:"int", editable: false, align:'left',search:true},
                          {name:'project_name',width:175,sortable:true, align:'left',search:true},
                          {name:'email',fixed:true,width:250,sortable:true, align:'left',search:true},
                          {name:'user_id',width:0,index:'item_code', sorttype:"int", editable: false, align:'left',search:true},

                      ],
                      height: '100%',
                      sortname: 'num',
                      sortorder: "asc",
                      shrinktofit: true,
                      forcefit: false,
                      autowidth:true,
                      rownum:500,
                      rowNum:500,
                      loadonce:true,
                      rowList:[500,1000],
                      viewrecords: true,
                      pager:"p_"+subgrid_table_id
                  });

Вопрос в том, как найти current_row (выбранную строку) и затем перечислить все проекты, принадлежащие выбранному пользователю.

В пользовательском контроллере (этоэто проекты, которые должны быть перечислены в подсетке)

def index
 @projects = Project.joins(:user).where(:projects => {project_id: selected_user.id(?))
end

Я пробовал что-то подобное, но я не знаю, как назвать selected_user.id, есть ли способ для этого?

Илиесли это совсем не хорошо, как бы вы порекомендовали это сделать?

1 Ответ

0 голосов
/ 23 июня 2019

Насколько я понимаю, вам нужно установить опции selectOnExpand в subGridOptions, чтобы получить текущую выбранную строку.См. документацию здесь

subGrid: true,
subGridOptions : {
    selectOnExpand : true
}
subGridRowExpanded: function(subgrid_id, row_id) {
...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...