2017-01-17 62 views
0

我將HTML錶轉換爲數組並將它傳遞給控制器​​以插入多行。我能夠創建數組,但問題是它創建了一個完整的表格數組,但我只想得到選定的行td值。如何從表中獲取選定的行值

//function to convert HTML table to array// 
var HTMLtbl = { 
    getData: function (table) { 
     var data = []; 
     table.find('tr').not(':first').each(function(rowIndex, r) { 
      var cols = []; 

      // I believe the main problem is here: 
      $(this).find('td').each(function(colIndex, c) { 
       cols.push($(this).text().trim()); 
      }); 
      data.push(cols); 
     }); 
     return data; 
    } 
} 

$(document).on('click', '#btnsave', function() { 
    var data = HTMLtbl.getData($('#tblresult')); 
    var parameters = {}; 
    parameters.array = data; 

    var request = $.ajax({ 
     async: true, 
     cache: false, 
     dataType: "json", 
     type: "POST", 
     contentType: "application/json; charset=utf-8", 
     url: "../Home/Save_SearchCarsDocs",   
     data: JSON.stringify(parameters) 
    }); 
    request.done(function(msg) { 
     alert("Row saved " + msg.d); 
    }); 
+0

您究竟知道何時選中某一行?看到你的HTML會有很大的幫助。表格的每一行是否有複選框或其他元素? –

+0

您可以使用colIndex屬性來識別TD的索引,並可以輕鬆決定要排除的內容。否則,如果您想要更合適的解決方案,您可以向TD添加數據屬性以排除該TD。 ..它可用於排除目標TD ..讓我知道如果您需要此解決方案的代碼 –

回答

0

你可以試試以下...

//function to convert HTML table to array// 
    var excludedTD_Index = [0,5,7]; // define what you want to exclude by index 
    var HTMLtbl = { 
     getData: function (table) { 
      var data = []; 
      table.find('tr').not(':first').each(function(rowIndex, r) { 
       var cols = []; 

       // I believe the main problem is here: 
       $(this).find('td').each(function(colIndex, c) { 
        if(excludedTD_Index.indexOf(colIndex) >=0) // exclude TD 
        continue; 
        cols.push($(this).text().trim()); 
       }); 
       data.push(cols); 
      }); 
      return data; 
     } 
    } 

    $(document).on('click', '#btnsave', function() { 
     var data = HTMLtbl.getData($('#tblresult')); 
     var parameters = {}; 
     parameters.array = data; 

     var request = $.ajax({ 
      async: true, 
      cache: false, 
      dataType: "json", 
      type: "POST", 
      contentType: "application/json; charset=utf-8", 
      url: "../Home/Save_SearchCarsDocs",   
      data: JSON.stringify(parameters) 
     }); 
     request.done(function(msg) { 
      alert("Row saved " + msg.d); 
     }); 

或者你可以使它更易於管理,如果你能加入上述數據後,添加以下數據到您的TD標籤

<td data-exclude="1"> 
... 

你可以排除那些列如下

var HTMLtbl = { 
     getData: function (table) { 
      var data = []; 
      table.find('tr').not(':first').each(function(rowIndex, r) { 
       var cols = []; 

       // I believe the main problem is here: 
       $(this).find('td').each(function(colIndex, c) { 
        if($(this).data("exclude") == 1) // exclude TD 
        continue; 
        cols.push($(this).text().trim()); 
       }); 
       data.push(cols); 
      }); 
      return data; 
     } 
    } 
0

謝謝Rory McCrossan終於得到我的答案我在下面添加我的解決方案

 var CB=1; 
var HTMLtbl = 
    { 
     getData: function (table) { 
      var data = []; 

      table.find('tr').not(':first').each(function (rowIndex, r) { 
       if ($("#chk_" + CB).is(':checked')) 
        { 
        var cols = []; 
        $(this).find('td').each(function (colIndex, c) {      
         cols.push($(this).text().trim());  

        }); 
        data.push(cols); 
       } 
       CB++; 
      }); 
      CB = 1; 
      return data; 

     } 
    } 
相關問題