アプリ版:「スタンプのみでお礼する」機能のリリースについて

大変お世話になっております。

Webフォーム上にObjectDataSourceを配置しております。
GridViewのデータソースとして何の問題もなく動作しております。

この配置してある ObjectDataSource のデータ全件を取得したいのですが、
文法はめちゃくちゃだと思うのですが、下記のイメージのような
取得の仕方はありますでしょうか?
他の方法でも構いませんので、ご指摘、ご教授いただければと存じます。

Dim TEST As ObjectDataSource = ODS_TEST
Dim buf As New StringBuilder

  For Each row As TEST In ObjectDataSource.Rows

    buf.Append(row.Cells("項目1").Text)
      buf.Append(",")
    buf.Append(row.Cells("項目2").Text)

  Next
 

A 回答 (3件)

こんにちは


何かObjectDataSourceの役割を勘違いされているような気がしますが。。

ObjectDataSourceというのは、表示・編集形のコントロールと、データ入出力のスキーム(TableAdapterとか、DataAdapterとか、XMLReaderとかetc)を「接着」すrための中間的なクラスです。
何のためにこんなものがあるかといえば、断然「データのページング取得」と「データ更新のための双方向バインディング」のためです。
なので、データの取得自体はデータアクセス層(DAL)の役目であり、ObjectDataSourceは表示・編集コントロールのための「繋ぎ役」にすぎません。
データ全件取得などのニーズであれば、直接DALから取るほうが速いし、メモリ的にも優しい処理です。
DataGridViewやListView、FormViewなどが主役でなければ、ObjectDataSourceはお呼びでないです。

また最近は、EntityFrameworkのような、リレーショナルデータを一括して処理できるDALの普及で、ObjectDataSourceの出番はなくなりました。
ADO.NET2.0時代の遺物にあまり拘らないほうがいいと。。
    • good
    • 0
この回答へのお礼

shockatzさん お世話になります。

ObjectDataSource の役割がよくわかりました。
もしかしたら、GridViewで使用している ObjectDataSource で、テキストファイル出力の為につかえないかなーっと思ったのが質問の意図でした。
DALとは何者か?! その辺りからいろいろと調べてみようと思っております。

ありがとうございました

お礼日時:2012/12/03 16:06

> ObjectDataSourceと同じSQL文(別途に記述して作成)から、


> SqlDataReaderを使用して ReadをWhileループさせて
> StringBuilderにカンマ区切りで保存させてCSVファイルの
> 出力まで完成させたのですが、

それをできるスキルがあるのなら、そうするのがベストだと
思いますが。すべて自分の思い通りできるはずですから。

> ObjectDataSourceと同じデータソースを使うなら、これを
> 利用できないかと思い、それまでの経緯は省いた形で質問
> させていただきました。

ObjectDataSource.Select メソッドを使ってデータを取得で
きると思いますが、自力でコードを書いてデータを取得でき
るなら、あまりメリットはなさそうです。
    • good
    • 0
この回答へのお礼

WebSurferさん お世話になっております。

ObjectDataSource.Select メソッドでもデータを取得できるのですね!
調べてみようと思っております。
また困ったことがありましたら、何卒ご教授いただければと存じます。

お礼日時:2012/11/30 15:36

> この配置してある ObjectDataSource のデータ全件を取得


> したいのですが、

意味が全く分かりません。もっと具体的に何がしたいのか書いていただけませんか?

この回答への補足

WebSurferさん お世話になります。

GridView のデータをCSVファイルに出力したいと考えております。
GridView のCSVファイル出力については、各サイトで紹介されているサンプルで取得できたのですが、GridViewのページオプションを適応していると、全件取得できないことや、テンプレートフィールドにしていると、その部分のセルの値が取得できないなどの事がわかりました。

ObjectDataSourceと同じSQL文(別途に記述して作成)から、SqlDataReaderを使用して ReadをWhileループさせてStringBuilderにカンマ区切りで保存させてCSVファイルの出力まで完成させたのですが、ObjectDataSourceと同じデータソースを使うなら、これを利用できないかと思い、それまでの経緯は省いた形で質問させていただきました。

Webフォームにすでに貼ってあるObjectDataSourceから直接CSVファイルに出力できる方法など、もしくは、Whileループなどを使用して全件データが取得できる方法があれば、CSVファイルを出力する機能をつける他のページでも流用できればなと思った次第であります。

ObjectDataSourceからこのような形でデータ取得をすること自体が間違ったことである、こういう方法がある、他の方法でこんな方法があるなどございましたら、何卒ご指摘、ご教授いただければと存じます。

よろしくお願いいたします。

補足日時:2012/11/29 09:02
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!