2017-01-17 4 views
0

Ich konvertiere eine HTML-Tabelle in ein Array und übergebe sie an einen Controller zum Einfügen mehrerer Zeilen. Ich bin in der Lage, das Array zu erstellen, aber das Problem ist, es ist ein komplettes Tabellenarray erstellen, aber ich möchte nur die ausgewählte Zeile td Werte erhalten.So erhalten Sie ausgewählte Zeilenwerte aus einer Tabelle

//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

Wie genau wissen Sie, wenn eine Zeile ausgewählt ist? Es wäre sehr hilfreich, deinen HTML-Code zu sehen. Gibt es in jeder Zeile der Tabelle ein Kontrollkästchen oder ein anderes Element? –

+0

Sie können die colIndex-Eigenschaft verwenden, um den Index von TD zu identifizieren, und können leicht entscheiden, was ausgeschlossen werden soll. Oder, wenn Sie eine geeignetere Lösung wünschen, können Sie TD ein Datenattribut hinzufügen, um dieses TD auszuschließen. .. und es kann verwendet werden, um das Ziel TD auszuschließen .. lassen Sie mich wissen, wenn Sie Code für diese Lösung benötigen –

Antwort

0

Sie können versuchen, folgende ...

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

oder Sie können es mehr überschaubar machen, wenn Sie Daten auf Ihrem TD-Tag folgende hinzufügen

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

nach oben Daten hinzufügen, die Sie kann diese Spalten wie folgt ausschließen

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

Danke Rory McCrossan endlich meine Antwort Ich füge meine Lösung unter

Verwandte Themen