2017-01-17 9 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; 

     } 
    } 
関連する問題