2012-04-20 23 views
14

フォームに含まれるテーブルでDatatablesというjQueryプラグインを使用しています。このテーブルには多くのフォーム要素が含まれています。DataTableに表示されないフォーム要素を投稿する

私はページに「変更を保存」ボタンがあり、これはユーザーが入力した内容に基づいてデータベースを更新するAJAXリクエストを実行します。

私が問題になっているのは、Datatableに現在表示されているフォーム要素のみを投稿するということです。私が持っている例では、74行(すべていくつかのフィールドを含む)があります。表示するデフォルトのレコード数は10です。

フォームが送信されるとき、10行のフォーム要素のみが送信されます。私はすべての行のフィールドを提出することでした - この場合は74行分のフィールドのすべてを提出することでした。

誰にでも解決策がありますか?ありがとう。

+0

あなたのテーブルにサーバー側のソースを使用していますか? – ManseUK

+0

私は古典的なASPを使用してテーブルを構築しています。 –

+0

私が意味することは、サーバーから隠された行を毎回取得しているのか、それともテーブル全体を出力してからデータテーブルをページングするのですか? – ManseUK

答えて

6

Datatablesは、非表示の行を破棄してDOMから取り出します。送信を行う必要がある場合は、送信する前にfnGetHiddenNodes()を使用して非表示の行を取得する必要があります。 apiページをご覧ください

$.fn.dataTableExt.oApi.fnGetHiddenNodes = function (oSettings) 
{ 
    /* Note the use of a DataTables 'private' function thought the 'oApi' object */ 
    var anNodes = this.oApi._fnGetTrNodes(oSettings); 
    var anDisplay = $('tbody tr', oSettings.nTable); 

    /* Remove nodes which are being displayed */ 
    for (var i=0 ; i<anDisplay.length ; i++) 
    { 
     var iIndex = jQuery.inArray(anDisplay[i], anNodes); 
     if (iIndex != -1) 
     { 
      anNodes.splice(iIndex, 1); 
     } 
    } 

    /* Fire back the array to the caller */ 
    return anNodes; 
} 
+0

大変感謝します。ドキュメント内でこのコードを探していて、見つけられませんでした。簡単な質問 'jQuery.inArray'と' $ .inArray'の違いは何ですか? –

+1

@GarethLewisそれらはまったく同じものです。 '$'は 'jQuery'のエイリアスです –

+0

私はこのアイデアを理解していれば、フォームを提出するanNodesとどうすればいいですか?私は何とかテーブルにすべての行を再度添付する必要がありますか? – eloyesp

関連する問題