2010-08-25 2 views
0

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

$(document).ready(function(){ 
     { $("#navmenu-v li").hover( 
        function() { 
         $(this).addClass("iehover"); }, 
        function() { 
         $(this).removeClass("iehover"); 
      }); 

     jQuery("#list10").jqGrid({ 
       sortable:true, 
      url: '/cpsb/json/jsonpageheader.txt', 
      datatype:'json', 
      colNames:['Order','Load', 'Gate Time', 'Stop','Customer','Status'], 
      colModel:[ 
         { 
           name:'orderNumber', 
           index:'orderNumber', 
           width:130, 
           align:"center", 
           sorttype:"int" 

         }, 
         { 
           name:'loadNumber', 
           index:'loadNumber', 
           width:100, align:"center", 
           sorttype:"int" 


         }, 
         { 
           name:'latestTime', 
           index:'latestTime', 
           width:160, 
           align:"center" 

          }, 
         { 
            name:'stopSeq', 
            index:'stopSeq', 
            width:80, 
            align:"center", 
            sorttype:"int" 

         }, 
         { 
            name:'customerNumber', 
            index:'customerNumber', 
            width:100,align:"center", 
            sorttype:"int" 

         }, 
         { 
            name:'orderStatus', 
            index:'orderStatus', 
            width:80, align:"center" 

         } ], 

      rowNum:10, 
      rowList:[10,20,30], 
      jsonReader : {repeatitems: false, 
      root: function(obj) { 
       return obj; 
      }, 
      page: function (obj) { return 1; }, 
      total: function (obj) { return 1; }, 
      records: function (obj) { return obj.length; } 
     }, 
      pager: '#pager10', 
      sortname: 'Gate Time', 
      sortorder: "desc", 
      viewrecords: true, 
      multiselect: true, 
      caption: "Order Header", 


      onSelectRow: function(ids) { 
       if(ids == null) { 
         ids=0; 
         if(jQuery("#list10_d").jqGrid('getGridParam','records') >0) 
          { 
          jQuery("#list10_d").jqGrid('setGridParam',{url:"/cpsb/unprocessedOrders.do?method=getUnprocessedOrderDetails"+ids,page:1}); 
          jQuery("#list10_d").jqGrid('setCaption',"Order Header: "+ids).trigger('reloadGrid'); } 
          } 
          else { 
           jQuery("#list10_d").jqGrid('setGridParam',{url:"/cpsb/unprocessedOrders.do?method=getUnprocessedOrderDetails"+ids,page:1}); 
           jQuery("#list10_d").jqGrid('setCaption',"Order Details: "+ids).trigger('reloadGrid'); 
           } 
         } , 
         height:'100%' 
     }); 
      jQuery("#list10").jqGrid('navGrid','#pager10',{excel:true, add:false,edit:false,del:false,searchtext:"Filter"},{},{},{},{multipleSearch:true}); 
     $("#list10").jqGrid('hideCol', 'cb'); 


     jQuery("#relCasePick").click(function(){ 
      var id = jQuery("#list10").jqGrid('getGridParam','selarrrow'); 
      alert(id); 

       }); 


      jQuery("#list10_d").jqGrid({ 
       height: 100, 
       url:'/cpsb/unprocessedOrders.do?method=getUnprocessedOrderDetails', 
       datatype: "json", 
       colNames:['Order','SKU', 'UPC', 'Item Description','Quantity Ordered','Teach in Hold?'], 
       colModel:[ {name:'Order',index:'', width:55}, 
         {name:'SKU',index:'sku', width:55}, 
         {name:'UPC',index:'qty', width:40, align:"right"}, 
         {name:'Item Description',index:'unit', width:150, align:"right"}, 
         {name:'Quantity Ordered',index:'quantity', width:150,align:"right", sortable:false, search:false}, 
         {name:'Teach in Hold?',index:'teachInId', width:150, align:"right"}, ], 
       rowNum:5, 
       rowList:[5,10,20], 
       jsonReader : {repeatitems: false, 
        root: function(obj) { 
         return obj; 
        }, 
        page: function (obj) { return 1; }, 
        total: function (obj) { return 1; }, 
        records: function (obj) { return obj.length; } 
       }, 
       pager: '#pager10_d', 
       sortname: 'SKU', 
       viewrecords: true, 
       sortorder: "asc", 
       multiselect: true, 
       caption:"Order Detail" 
      }).navGrid('#pager10_d',{add:false,edit:false,del:false}, {},{},{},{multipleSearch:true}); 
       jQuery("#ms1").click(function() { 
       var s; 
       s = jQuery("#list10_d").jqGrid('getGridParam','selarrrow'); 
       alert(s); }); 
     }}); 

есть способ, что я не буду тянуть другие данные сетки и вместо того, чтобы только строки клики от 1-ой сетки я буду получить значения для следующей сетки


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

для второй части

is there a way that i will not pull the other grid data and instead of that only on row click from 1st grid i will get the values for next grid? 

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

Более того, у меня есть релиз вызова кнопки для выбора случая и нажатия на эту кнопку. Я отправил выбранные строки в базу данных. Я для этого использовал класс действий, но как мне нужно отправить выбранные строки.

jQuery("#relCasePick").click(function(){ 
      var id = jQuery("#list10").jqGrid('getGridParam','selarrrow'); 
      alert(id); 

       }); 

я могу сделать что-то вроде jQuery(("#list10").jqGrid('getGridParam','action class URL')


я могу сделать что-то подобное для отправки строки на сервер

jQuery("#relCasePick").click(function(){ 
      var rows= jQuery("#list10").jqGrid('getRowData'); 
       var paras=new Array(); 
       for(var i=0;i<rows.length;i++){ 
        var row=rows[i]; 
        paras.push($.param(row)); 
       } 
       $.ajax({ 
        type: "POST", 
        url: "/cpsb/unprocessedOrders.do?method=releaseToCasePick", 
        data: paras.join('and'), 
        success: function(msg){ 
         alert(msg); 
        } 
       }); 

ответ

0

В текущем коде вы установите URL для подробной сетки подобные

"/cpsb/unprocessedOrders.do?method=getUnprocessedOrderDetails"+ids 

вы хотите, вероятно,

"/cpsb/unprocessedOrders.do?method=getUnprocessedOrderDetails&someParameter="+ids 

Не могли бы вы также переформулировать ваш второй вопрос

есть способ, что я не буду тянуть другие данные сетки и вместо , что только на строке нажмите из 1-й сетки i получит значения для следующей сетки?

Что вы подразумеваете под «для получения значений для следующей сетки»? Следующая сетка - это сетка деталей? Откуда вы хотите получить значения? Что касается метода getRowData (см. http://www.trirand.com/jqgridwiki/doku.php?id=wiki:methods#grid_related_methods), вы можете получить полные данные из выбранной строки главной сетки, но из какого источника вы планируете получать данные для сетки деталей? .

+0

JQuery ("# relCasePick") нажмите (функция() { вар строк = JQuery ("# песни10") jqGrid ('getRowData.'); вар пункты = новый Array(); для (вар I = 0; г Paul

+0

Да. Что-то вроде этого может работать. Я бы назвал только 'jqGrid ('getGridParam', 'selarrrow')', чтобы получить идентификаторы только выбранных строк и не вызывать 'jqGrid ('getRowData')' без второго параметра, которые получают ** все данные ** из сетки. Кроме того, если вам нужны только значения из 'orderNumber', вы можете использовать' jqGrid ('getCell', ids [i], 'orderNumber') 'вместо' jqGrid ('getRowData', ids [i]). OrderNumber'. Если значения из 'orderNumber' уникальны, вы можете использовать этот столбец как id. Для этого введите «ключ: истина» в определении столбца столбца 'orderNumber'. Тогда идентификаторы из' selarrrow' будут значениями, которые вам нужны. – Oleg

+0

. Как упаковать данные, которые вы хотите отправить на сервер, вы должны сами решить. В общем случае, если 'ids' является массивом идентификаторов, которые вы хотите отправить, тогда' JSON.stringify' будет JSON-форматированной строкой с данными. Вы можете использовать '. $ .ajax ({type:" POST ", url: someUrl, data: JSON.stringify (ids), dataType:" json ", success: function (msg) {alert (msg);}}); 'для отправки данных. Зависит от ваших серверных компонентов, которые вы используете, если потребуется изменить 'data: JSON.stringify (ids)' на что-то вроде 'data: {myParam: JSON.stringify (ids)}'. Затем вы сможете получить входные данные из входного параметра myParam. – Oleg

Смежные вопросы