2013-01-11 4 views
5

私は数日間この質問に対する答えを見つけようとしており、これができないと信じるのは難しいと感じています。入手したデータにアクセスする

私は、ページが構築されているときSqlDataSource.Select方法がASP.NETランタイムによって自動的に呼び出されたときに構築されていDataSet/DataTableに取得したいです。

私は背後にあるコードでそれを実行することができます知っているが、これは、データベースへの第二のトリップを行い、私は本当にこの問題を回避したいと思います。私が遭遇したすべての例は、コードの中でSelectメソッドを実行するように指示します。

すでに取得されているデータにアクセスする方法はありますか?

+1

あなたが知っている、私は数年前、一度それを把握することを試みたが、それが結合するだけで簡単だったことを決めましたコードはコードビハインドであるので、私はデータセットに簡単にアクセスできました。誰かがこれを行う方法を知っているなら、それが今後の同様の状況にどのように近づくかを変えるかもしれません。 +1を求める。 – David

+2

私はそのコントロールを全く使用しません。代わりに、ADO.NET(f。DataAdapter.Fill(DataTable))またはNHibernateまたはEntityフレームワークのような実際のORMマッパーを使用してください。とにかく、「コードビハインドがデータベースに2回目のトリップをする」と思う理由は明確ではありません。 'if(!IsPostBack)'を使用してください。 –

+0

コントロールの選択肢がありません。私は既存のページに変更を加える必要があり、それを書き直すという贅沢はありません。 SqlDataSourceでSelectメソッドを呼び出すと、Microsoftのデータベースにアクセスします。http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.sqldatasource.select.aspx – dscarr

答えて

0

あなたはこのコードを試すことができます - ToTable法に基づく

DataView view = (DataView)SqlDataSource.Select(...); 
DataTable table = view.ToTable(); 

リンク:http://msdn.microsoft.com/en-us/library/wec2b2e6.aspx

+0

私が話しているコードです。 SqlDataSourceでSelectメソッドを実行すると、データベースからデータが取得されます。 (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.sqldatasource.select.aspx)私はこれを何度も使用しましたが、この場合は2回目のトリップを避けたいと思います。 – dscarr

+0

あなたは説明することができます –

+0

「2回目の回避を避ける」とは、既にデータをどこかに持っていることを意味します。その場合、仮の 'DataSource'を提供することによってPreRender中に' OnSelect() 'の呼び出しを傍受し、得られたデータの代わりに独自の(キャッシュされた?)データセットを代入できますか? –

関連する問題