2012-02-19 3 views
0

Я поставил страницу jqgrid. В Jqgrid поместил столбец, который я хочу, когда пользователь нажимает на столбец, Fill Other Jqgrid.Now, когда я нажимаю на нужный столбец. Только первый раз заполнить второй JQGrid, но в следующий раз код на стороне сервера не будет запущен. код записывается следующим образомФункция на стороне сервера вызывается только один раз в jqGrid

var firstButtonColumnIndex = 0; 
      grid = $('#list'); buttonNames = {}; 
      grid.jqGrid({ 
       url: 'jQGridHandler.ashx?Request=1', 
       loadonce: true, 
       direction: "rtl", 
       pgtext: "صفحه {0} از {1}", 
       datatype: 'json', 
       height: 250, 
       colNames: ['شماره درخواست', 'شماره اموال', 'شرح دستور کار', 'تاریخ دستور کار', 'زمان دستور کار', 'ملاحظات', '', ''], 
       colModel: [ 

         { name: 'WorkOrderNo', width: 100, sortable: true }, 
         { name: 'AssetNo', width: 100, sortable: true }, 
         { name: 'WorkDescription', width: 400, sortable: true }, 
         { name: 'WorkOrderDate', width: 80, sortable: true }, 
         { name: 'WorkOrderTime', width: 80, sortable: true }, 
         { name: 'Remark', width: 100, sortable: true }, 
         { name: 'del', width: 20, sortable: false, search: false, 
          formatter: function() { 
           return "<span class='ui-icon ui-icon-trash'></span>"; 
          } 
         }, 
         { name: 'details', width: 20, sortable: false, search: false, 
          formatter: function() { 
           return "<span class='ui-icon ui-icon-document'></span>"; 
          } 
         } 

        ], 
       gridview: true, 
       rowNum: 10, 
       rowList: [10, 20, 30], 
       pager: '#pager', 
       // sortname: 'WorkOrderNo', 
       viewrecords: true, 
       sortorder: 'asc', 
       caption: 'درخواست ها...........', 
       rownumbers: true, 
       beforeSelectRow: function (rowid, e) { 
        var iCol = $.jgrid.getCellIndex(e.target); 
        if (iCol == 7) { 
         //alert("rowid=" + rowid + "\nButton name: " + buttonNames[iCol]); 
         // $('img').each(function() { 
         $("#workRequestPopUp").draggable(); 
         // }); 

        } else if (iCol == 8) { 
         workOrderId = rowid; 

         $("#tblRequestWorks tr").remove(); 
         $("#tblRequestWorks").jqGrid({ 
          // url: 'jQGridHandler.ashx?RequestWorksFill=1&workOrderId=' + workOrderId, 
          url: "PublicHandler.ashx?Request=1&workOrderId: rowid", 
          direction: "rtl", 
          pgtext: "", 
          datatype: 'json', 
          height: 250, 
          colNames: ['نام کار', 'نام واحد', 'سرپرست واحد', 'تعداد', 'پایان کار', ''], 
          colModel: [ 

         { name: 'WorkName', width: 300, sortable: true }, 
         { name: 'SectionName', width: 100, sortable: true }, 
         { name: 'SectionSupervisor', width: 100, sortable: true }, 
         { name: 'RequestCount', width: 80, sortable: true }, 
         { name: 'FinishWork', width: 100, sortable: true }, 
         { name: 'details', width: 20, sortable: false, search: false, 
          formatter: function() { 
           return "<span class='ui-icon ui-icon-document'></span>"; 
          } 
         } 

        ], 

          rowNum: 10, 
          rowList: [10, 20, 30], 

          sortorder: 'asc', 
          caption: 'Test', 
          rownumbers: true, 
          beforeSelectRow: function (rowid, e) { 
           var iCol = $.jgrid.getCellIndex(e.target); 
           if (iCol == 6) { 
            alert(rowid); 
            Fill12(rowid); 
           } else if (iCol == 8) { 
            alert(rowid); 
            Fill12(rowid); 

            return true; 

            // return (iCol >= firstButtonColumnIndex) ? false : true; 

           } 
          }, 
          dataType: "json" 

         }); 
         // fillRequestWorkPopup(workOrderId); 

         popup(e); 
        } 
        // prevent row selection if one click on the button 
        // return (iCol >= firstButtonColumnIndex) ? false : true; 
        return true; 
       } 


      }); 

Это делегат функции в тр в JQGrid? Я уважаю профессоров, которые могут помочь. спасибо

ответ

1

URL "PublicHandler.ashx?Request=1&workOrderId: rowid" кажется мне неправильным. Вы имеете в виду, вероятно, "PublicHandler.ashx?Request=1&workOrderId=" + rowid? Лучше будет использовать url: "PublicHandler.ashx" с postData: {Request: 1, workOrderId: rowid}.

Следующая проблема заключается в использовании $("#tblRequestWorks tr").remove();. Вы не включаете HTML-код, который вы используете на странице. Если вы хотите уничтожить старую сетку и создать новую на том же месте, вы должны использовать GridUnload вместо $("#tblRequestWorks tr").remove();: $("#tblRequestWorks").jqGrid('GridUnload'); (см. here и пример).

Вы также можете удалить dataType: "json" с кодом. jqGrid не знает эту опцию, и вы уже используете правильный вариант datatype: "json".

Я думаю, вы можете изменить свой код, чтобы не использовать GridUnload. Только изменение некоторых параметров второй сетки ($("#tblRequestWorks")) и перезагрузка ее по отношению к $("#tblRequestWorks").trigger('reloadGrid', [{page: 1}]); кажется мне достаточно.

Еще одно замечание: вы должны быть очень осторожны в значениях id для второй сетки. Не допускается наличие дубликатов id на странице. Если вы не можете создать уникальные идентификаторы на сервере, вы можете рассмотреть возможность использования опции idPrefix.

+0

@ Олег: Спасибо, вы можете объяснить еще один пример ??? – Pouya

+0

@mohsen: какой пример вы имеете в виду? Если вы создадите jqGrid, то будет создано много других погружений над элементом '

'. Чтобы удалить существующую сетку, недостаточно удалить все элементы '' внутри '
'. Метод «GridUnload» выполняет всю работу. Таким образом, вы сможете создать еще одну сетку в одном месте. – Oleg