2011-01-10 18 views
8

他の誰かがこの問題を抱えているのかと疑問に思いました。私のビューで最初にテーブルを構築するとき、私はajax呼び出しのために渡す必要がある情報を保持するために、各テーブル行にカスタム属性(customerIDと呼ぶ)を使用しています。しかし、私はテーブルに行を動的に追加しています。その行の属性に同じ情報(customerID)を渡す方法を理解することはできません。現在、行を追加するときに唯一行うことは、列に正確に対応する配列の配列を作成することです。これは正常に動作しますが、余分な情報を返す余地はありません。jQuery Datatables plugin:テーブルに行を追加するときに行の属性を指定する方法

行を追加するときにその情報をビューに送り返す別の方法がある場合は、その属性に属性を格納する必要はありません。誰にもこれに関するアイデアはありますか?

ありがとうございました。

+0

この属性を非表示の列に保存できませんか? – a1ex07

+0

プラグインを使用して列を非表示に設定すると(設定でbVisibleを使用)、プラグインは文字通りDOMから列を削除してプラグイン内の変数に格納します。だから自分自身では、もはやそこにないので、列からデータを選択することはできません。 –

+0

しかし、あなたは 'fnGetData'を通してそれにアクセスできます。あなたのために働かないのですか? – a1ex07

答えて

1

プラグインの組み込み関数を使用して行を1つずつループすることで、この問題を解決できました。サーバー上で、クライアントに戻ったら必要なすべての情報のフィールドを含むプライベートクラスを作成しました。これには、表のセルの実際の値だけでなく、属性に配置される情報も含まれます。私はこれらのリスト(1つのオブジェクト= 1行分の情報)を作成し、それらをシリアライズし、呼び出し元のajaxメソッドに戻します。

function(rowsToAdd) { 

    var rowList = JSON.parse(rowsToAdd); // rows come back as object representations of table rows, with properties 

    $.each(rowList, function(index, row) { 
     var rowStringArray = [row.Prop1, row.Prop2, row.Prop3, row.Prop4]; 
     var rowPos = tableObject.fnAddData(rowStringArray); // add the row through the plugin, and receive the row's index in return 
     var tableRowElement = tableObject.fnGetNodes(rowPos[0]); // get reference to <tr> element just added 

     $(tableRowElement).attr('attributeINeeded', row.AttributeProp).attr('anotherAttributeINeeded', row.AttributeProp2); 
    }); 
} 
+0

大量のデータが入っている誰かにはこのソリューションを推奨しません。テーブル*内のすべての単一の行をループするのは、パフォーマンスにはほとんど影響しません。 – Kehlan

0

は、それが作成された後、TRノードを変更するfnCreatedRow callbackを使用して、次のコードは、私は戻って、オブジェクトのシリアル化された文字列を受け取った、と私はJSにいる前提としています。

関連する問題