1

ページの読み込み時に、処理のために JavaScript に戻す必要がある DataTable の結果を利用できます。

私のオプションは何ですか?

  1. 非表示フィールドを使用して、データを元に戻します。おそらくそれをxml/jsonに変換してから、その方法でjavascriptからアクセスしてください。痛そうです。このアプローチでは余分な往復はありません。
  2. webmethod/webservice を使用して javascipt から直接呼び出しを発行し、DataTable を取得します。
  3. .aspx ページから使用できるASP.NET インライン式(つまり <% 構文) を使用して、分離コード内のオブジェクトにアクセスすることもできます。このアプローチでは余分な往復はありません。
  4. DataTable を json/xml に変換し、ASP の ClientScript.RegisterStartupScript を使用して、関数などから返される文字列として使用できるようにします。ハックに聞こえますが。
  5. DataTable/DataSet (または IEnumerable インターフェイスを実装する任意のオブジェクト) を DataGrid、DataList、Repeater などの ASP データ コントロールにバインドし、CSS を使用してコントロールを非表示にします。#datacontrol {display: none;}

これどうやってするの?

4

4 に答える 4

0

あなたがすでに推論したようにあなたがそれをすることができる多くの方法があります。これを行う必要があるときはいつでも、clientscript.registerclientscriptblockメソッドを使用してデータをjavascript変数に書き出し、ページ内のjavascriptを使用して変数にアクセスし、残りの解析を実行しました。 たとえばこれを参照してください

文字列ビルダーまたは選択したものを使用して、テーブル値を含むjavascript配列を暗くし、それをページに渡します。

于 2012-12-21T00:32:50.777 に答える
0

単なる配列の場合は、こちらを参照してください。

カスタムオブジェクトの場合、IMO経由でサーバーメソッドを呼び出す方が良いです。ajax リクエストを読み込み、JavaScript オブジェクトにロードしてデータを処理します。

于 2012-12-13T22:25:25.803 に答える
0

私のasp.netアプリケーションの1つで、これと同じ要件がありました。私がしたことは、 :: のようなカスタムセパレーターを使用して、 Page_Load() の DataTable から文字列変数を作成したことです。行セパレーターと列セパレーターなど。次に、CSS {display: none;} を使用して、文字列を非表示のフィールドまたはテキスト ボックスのテキストに設定します。

その後、完全/部分的なポストバックごとに実行する場合は、javascript $(document).ready() ブロックまたは javascript pageLoad function() で hidden-field または TextBox の値を取得できます。

コード ビハインドで DataTable を文字列にコーディングしたように、値を取得してデコードし、必要に応じて処理します。

それが役に立てば幸い :)

于 2012-12-27T11:37:07.053 に答える
0

上記のオプションをいくつか試した結果、 #3 ( ASP.NET インライン式) が DataTable や DataSet などの ADO クエリ結果にアクセスするための最良の選択であることがわかりました。実装が最も速く、追加のラウンドがないためです。ページの構築中にインライン式が解決されるという事実によるトリップ。

#5 (データをデータ コントロールにバインドしてから非表示にする)を試しましたが、著しく遅く、DataTable/DataSet のすべての機能を公開するコントロールを見つけるのに問題がありました。レコードをバインドできるデータ コントロールはいくつかありますが、私が見つけたのは、リピーター コントロールなどに変換すると、DataSet/DataTable に付属する「便利な機能」の多くが失われることです。これらの機能をより多く取得するために利用可能なフル機能の ASP コントロールのいずれかを使用すると、これらのコントロールは読み取り/書き込みおよび表示用のコンテンツのレンダリングを目的としているため、パフォーマンスが低下します。また、コード ビハインドにあるデータへのアクセスは、思ったほど簡単ではありませんでした。#4

について考えてみた(ASP の ClientScript.RegisterStartupScript を介してデータを渡す)、しかし、公開する必要があるすべてのオブジェクトをシリアル化/逆シリアル化して、それに伴う問題を処理する必要はありませんでした。それは正しい方法のようには思えませんでした。ただし、より単純なオブジェクトには問題ないと思います。

そして、#1(非表示フィールドにデータをシリアル化する)は、上記の#4(ASPのClientScript.RegisterStartupScriptを介してデータを渡す)とほとんど同じ概念なので、私はそれを気にしませんでした。もう1つ

の(2番目に良い)可能性は#2を行う@Sundeep と @ron_tornambe が指摘したように (webmethod/webservice を使用)。ただし、このオプションはページ リクエストに余分なラウンド トリップを追加します。上記のシナリオでは、ページの読み込み時に DataTable/DataSet を使用する準備ができているため、最適ではありません。それがなければ、私が最初に選んだ #3 (ASP.NET インライン式) と同じだったと思います。機能をフルに備えたオブジェクトを操作できるからです。

于 2012-12-28T18:16:45.953 に答える