2010-08-17 5 views
0

J'ai un jqGrid avec une barre d'outils de jquery UI. Ma barre d'outils se compose de Voir & Mode Édition. Dans mon jqGrid onSelectRow, je vérifie le mode d'édition avec la méthode isInEditMode. Cela renvoie true si le bouton avec l'état ui-active est le bouton d'édition.jqGrid sélectionne une ligne une seule fois, puis ne peut plus sélectionner aucune autre ligne, la grille est bloquée

Ma grille semble correctement chargée et les classes de survol sont activées/désactivées en déplaçant ma souris sur les lignes. Si je ne suis pas en mode édition et que je clique sur une ligne, elle fait d'autres fonctionnalités, ce qui est correct. Mais lorsque isInEditMode renvoie true, il semble seulement permettre à onSelectRow de se déclencher une fois.

Un grand merci pour toute l'aide.

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 }); 

Répondre

0

La partie else à l'intérieur de onSelectRow poignée d'événement ressemble un peu étrange. Vous devriez mieux ne pas appeler onSelectRow à l'intérieur de onSelectRow et l'utilisation de getRowData à l'intérieur du même fragment de code else me semble également faux (le rowId devrait être le paramètre de la fonction).

+0

l'onSelectrow (rowData) est une fonction transmise dans la méthode qui génère la grille. J'ai changé le nom de la fonction pour éviter tout conflit futur, mais je reçois toujours le problème. – Josh

+0

Actuellement, le code que vous publiez contient de nombreuses références à des fonctions externes ('isInEditMode',' onSelectGridRow', 'budgetGridLoadComplete'). Donc, votre problème ne peut pas être reproduit. Le problème que vous décrivez n'existe pas dans un simple jqGrid. Si vous voulez que quelqu'un répare votre problème, vous devriez poster un code avec lequel d'autres personnes peuvent reproduire votre problème. – Oleg

Questions connexes