2013-02-04 29 views
0

我正在使用Jquery DataTable Grid。 這裏我正在編輯單元格,如: this Example使用jQuery DataTable Grid製作只讀行

現在如果「引擎版本」列的值爲「420」,那麼我想讓整行爲只讀。

請幫我一把。

編輯:

var oTable; 
     $(document).ready(function() { 
      oTable= $('#example').dataTable({ 
       "bProcessing": false, 
       "bJQueryUI": true, 
       "sAjaxSource": "GetWebAlerts.aspx", 
       "sPaginationType": "full_numbers", 
       "aLengthMenu": [ 10,25,50,100,200,500 ], 
       "fnDrawCallback": function (oSettings) { 
        if (oSettings.bSorted || oSettings.bFiltered) { 
        if (oSettings.aoColumns[1].bVisible == true) { 
         for (var i = 0, iLen = oSettings.aiDisplay.length; i < iLen; i++) { 
          $('td:eq(0)', oSettings.aoData[oSettings.aiDisplay[i]].nTr).html(i + 1); 
         } 
        } 
       } 
      }, 
       "aaSorting": [[3, "desc"]], 
       aoColumns: [ 
       { "bVisible": false, "bSortable": false, "aTargets": [0] }, 
       {"sClass" : "left", "bVisible": true, "bSortable": false, "aTargets": [1] }, 
       { "bVisible": true, "bSortable": true, "aTargets": [2] }, 
       { "bVisible": true, "bSortable": true, "aTargets": [3] }, 
       { "bVisible": true, "sType": "num-html","bSortable": false, 
        "fnRender": function (oData, sVal) { 

         if (sVal.indexOf("OVERSPEED") >= 0) {        
         return "<span title='Overspeed = " + oData.aData[8] + " KM/H'>" + sVal + "(" + oData.aData[8] +" KM/H)</span>";               
         } 
         else if (sVal.indexOf("IDLING") >= 0) { 
          return "<span title='Idling from = " + oData.aData[8].split(";")[0] + " For "+ oData.aData[8].split(";")[1] + " Mins'>" + sVal + "("+ oData.aData[8].split(";")[1]+ " Mins)</span>"; 
          } 
         else if(sVal.indexOf("Geofence In") >= 0) 
         { 
          return "<span>" + oData.aData[8] + "- IN</span>"; 
         } 
          else if(sVal.indexOf("Geofence out") >= 0) 
         { 
          return "<span>" + oData.aData[8] + "- OUT</span>"; 
         } 
         else { 

         return sVal;        
         } 
        }, "aTargets": [4], "asSorting": ["desc", "asc"] }, 

       { "bVisible": true, "bSortable": true, "aTargets": [5] }, 
       { "bVisible": true, "bSortable": true, "aTargets": [6] }, 
        { "bVisible": true, "bSortable": true, "aTargets": [7] } 

        ] 

       }).makeEditable({ 
            sUpdateURL: "UpdateWebData.aspx?i=0", 
            "aoColumns": [ 
             null, 
              null, 
              null, 
              null, 

              { 
              indicator: 'Saving reason...', 
              tooltip: 'Click to select reason', 
              loadtext: 'loading...', 
              type: 'select', 
              onblur: 'submit', 
              data: "{'1':'Accident','2':'Battery Taken Out','3':'In Workshop','4':'Not In Operation','5':'Signal Lost','6':'Other'}"             

              }, 


              { 

              }, 
              null 
            ], 
             sDeleteURL: "UpdateWebData.aspx?i=1", 
             oDeleteRowButtonOptions: { label: "Remove", 
               icons: {primary:'ui-icon-trash'} 
            }, 

           }); 
          }); 

這是我的代碼。我想使只讀如果從我的頁面GetWebAlerts.aspx第5號JSON數據爲「0」。

回答

1

不用看看你的代碼,我會試着解釋我將如何去做這件事。

在他們輸入值的JS中,檢查輸入是否爲引擎版本,值是420. 如果是,請將該類添加到名爲420row的行中。

然後在綁定點擊更改輸入的功能中,更改選擇器以添加:not('.420row')。同樣,如果你發佈你的代碼,或者更好的做一個jsfiddle,那麼我將能夠更好地幫助你。

0

我使用下面的代碼來創建非可編輯的行.....通過將onclick事件添加到該特定的行,並添加條件,使您想要使其成爲Non可編輯的基礎。例如下面的代碼:

$('#employee tbody tr') 
    .live('click', function() { 
     var nTds = $('td', this); 
     var designation = $(nTds[4]).text(); 
      if (designation == "****") { 
      alert('Employee designation is **** so cannot update now'); 
      } 
    });