2010-08-17 6 views
0

jquery UI 단추 도구 모음과 함께 jqGrid가 있습니다. 내 도구 모음은보기 & 편집 모드로 구성됩니다. 내 jqGrid onSelectRow에서 메서드 isInEditMode로 편집 모드를 확인합니다. ui-active-state가있는 버튼이 편집 버튼이면 true를 반환합니다.jqGrid는 한 번만 행을 선택하고 이후에 다른 행을 선택할 수 없습니다. 격자가 붙습니다

내 눈금이 올바르게로드 된 것처럼 보이고 마우스 포인터를 드래그하여 행 위에 마우스를 놓으면 켜기/끄기가 켜집니다. 편집 모드에 있지 않고 행을 클릭하면 다른 기능이 수행됩니다. 하지만 isInEditMode가 true를 반환하면 onSelectRow가 한 번만 발사되도록 허용하는 것으로 보입니다.

많은 도움을 주셔서 감사합니다.

var lastselTsg; 

grid.jqGrid({ 
     colNames: ['BudgetId', 'BudgetAccountId', 'Account #', 'Name', 'Cost', 'StaticRowId', 'SortOrder'], 
     colModel: [ 
      { name: 'BudgetId', index: 'BudgetId', hidden: true, edithidden: true }, 
      { name: 'BudgetAccountId', index: 'BudgetAccountId', hidden: true, edithidden: true }, 
      { name: 'AccountNumber', index: 'AccountNumber', sortable: false, width: 70 }, 
      { name: 'BudgetName', index: 'BudgetName', sortable: false, width: 230, editable: true, edittype: 'text', editoptions: { 
       defaultValue: "", 
       dataInitInit: function (el) { 
        var value = $(el).val(); 

        value = value.replace("<strong>", ""); 
        value = value.replace("</strong>", ""); 

        $(el).val(value); 
        $(el).focus(); 

        if (value == "") { 
         $(el).remove(); 

         return false; 
        } 

       } 
      } 
      }, 
      { name: 'TotalCost', index: 'TotalCost', sortable: false, formatter: totalCurrencyFormatter, width: 100 }, 
      { name: 'StaticRowId', index: 'StaticRowId', sortable: false, hidden: true, edithidden: true }, 
      { name: 'SortOrder', index: 'SortOrder', sortable: false, hidden: true, edithidden: true } 
     ], 
     pager: pager, 
     pgbuttons: false, 
     pginput: false, 
     rowlist: [], 
     sortname: 'SortOrder', 
     rowNum: 99999999, 
     sortorder: "asc", 
     datatype: "json", 
     viewrecords: true, 
     url: url + "GetLoad", 
     editurl: url + "SaveGrid/", 
     loadComplete: function (data) { 

     }, 
     onSelectRow: function (rowId) { 
      if (isInEditMode(budgetId)) { 
       if (rowId && rowId !== lastselTsg) { 

        grid.jqGrid('restoreRow', lastselTsg); 

        var rowData = grid.jqGrid("getRowData", rowId); 
        if (rowData != undefined && rowData != null) { 
         console.debug("entering edit mode");  

         grid.jqGrid('editRow', rowId, true, '', '', url + 'SaveTopSheet', { 
          budgetAccountId: rowData.BudgetAccountId 
         }, 
         function(rowid, response) { 
          console.debug("aftersave: reloadGrid"); 
          grid.trigger("reloadGrid"); 
         }, '', function(rowid, reuslt) { 
          console.debug("after restore: reloadGrid"); 
          grid.trigger("reloadGrid"); 
         }); 

        } 

        lastselTsg = rowId; 
       } 
      } else { 
       var getRowData = $("#baseTopSheetGrid" + budgetId).jqGrid('getRowData'); 
       var rowData = getRowData[rowId - 1]; 

       onSelectGridRow(rowData); 
      } 
     }, 
     gridComplete: function() { 

      var ids = grid.jqGrid('getDataIDs'); 
      var getRowData = grid.jqGrid('getRowData'); 

      if ($.isFunction(budgetGridLoadComplete)) 
       budgetGridLoadComplete(getRowData); 

     } 
    }).navGrid(pager, { edit: false, add: false, del: false, search: true }); 

답변

0

onSelectRow 이벤트 핸들의 내부 else 부분은 조금 이상한 것 같습니다. 당신은 onSelectRowonSelectRow 안에 넣고 getRowData을 같은 else 코드 조각 안에 넣고 사용하는 것이 나에게 좋지 않을 것입니다 (rowId는 함수의 매개 변수 여야 함).

+0

onSelectrow (rowData)는 모눈을 생성하는 메서드로 전달되는 함수입니다. 나는 미래의 충돌을 피하기 위해 함수의 이름으로 변경했지만 문제는 여전히 발생합니다. – Josh

+0

현재 게시하는 코드에는 외부 함수 ('isInEditMode','onSelectGridRow','budgetGridLoadComplete')에 대한 많은 참조가 있습니다. 따라서 문제를 재현 할 수 없습니다. 설명하는 문제는 간단한 jqGrid에 존재하지 않습니다. 누군가가 문제를 해결하기를 원하면 다른 사람들이 문제를 재현 할 수있는 코드를 게시해야합니다. – Oleg

관련 문제