トップ回答者
コードでGridViewへ1行ずつデータを追加

質問
回答
-
英語ですけど、チュートリアル形式になっているのでわかりやすいのがこちらだと思います。
http://weblogs.asp.net/scottgu/archive/2006/01/15/435498.aspxあと、こちらの本がたいへん参考になります。
http://www.amazon.co.jp/exec/obidos/ASIN/4891005157/250-0114532-0770674
すべての返信
-
fjdsskl さんからの引用 SqlDataReaderで取得したデータをコーディングにより、DataBindではなく、一行ずつ
GridView1へ追加したいのです。コーディングの方法を教えて頂きたいのですが。
通常、この場合ですと、真っ先に考えるのはビジネスロジックの使用できるObjectDataSourceの使用ですが、それではダメなんでしょうか?
どうしてもSqlDataReaderが使用したいということであれば、GridViewのDataSourceにはDataSetをバインドできますから、データテーブルを必要な行のみにしてしまえば良いでしょう。これに関してはASP.NET 1.1のDataGridと同じです。
いや、そうではなく、どうしてもDataBindを使いたくないという理由があるなら、おっしゃって下さい。やったことはありませんが、こちらでも試してみたいと思います。
考え方としては、GridViewRowを作成して、一行ずつGridViewに追加してイメージになると思います。 -
じゃんぬねっとさん、trapemiyaさん、有難うございます。
今、必要にせまられているわけではないのですが、
あるDBのデータをASP.Net2.0で表示する際、
元のデータのまま表示するのではなく、加工(変形?)して表示したい場合も
あると思います。
データを1件ずつ読み込み、それぞれのデータの内容により、
表示を変えたい場合、また、複雑な条件で表示させる・させないの選択をしたい
場合など、このような事が出来れば、便利かと思いました。
バインドでもイベント ハンドラによって可能であれば、イベント ハンドラで
行いたいと思います。また、ObjectDataSourceの使用方法がよくわかっておりません。
SQL Serverの場合は、SqlDataSource、Accessの場合は、AccessDataSource、
それ以外は、ObjectDataSourceと思ってよろしいでしょうか?
ビジネスロジックが使用できるとは、??また、SQL Serverのデータをブラウザへ表示(更新不要)する場合、
パフォーマンスを最優先に考えるとしたら、SqlDataReaderを使用するのが
最適でしょうか。質問が増えてしまったようで、すみません。よろしくお願い致します。
-
>元のデータのまま表示するのではなく、加工(変形?)して表示したい場合も
あると思います。そのためにObjectDataSourceがあります。
>また、ObjectDataSourceの使用方法がよくわかっておりません。
SQL Serverの場合は、SqlDataSource、Accessの場合は、AccessDataSource、
それ以外は、ObjectDataSourceと思ってよろしいでしょうか?
ビジネスロジックが使用できるとは、??簡単に言うと、SqlDataSourceやAccessDataSourceは、SQL文やストアドプロシージャを直接発行してデータを操作します。しかも悪いことに、Webページに直接そのSQL文が書き込まれてしまっています。この欠点は以下のようなものがあります。
1.SQL文やストアドプロシージャを直接発行するため、条件によってSQL文を変えるなどの柔軟性がない。せいぜい、パラメータによるSQL文の発行ぐらいである。
2.Webページに直接SQL文が書き込まれているため、コードの再利用性が低い。また、同じSQL文を何度も書くことになる場合があり、冗長度が高い。
以上は、ASP.NET1.1で使われていた2階層パターンと同じです。すわなち、
1.プレゼンテーション層(Web ページ)
2.データストア層(データベース)
以上の欠点を解消するために、ASP.NET 2.0では以下の3階層パターンが使えるようになっています。これを実現するにはObjectDataSourceを使用します。
1.プレゼンテーション層(Web ページ)
2.データアクセス層(略してDAL。ビジネスロジックを実現するクラス)3.データストア層(データベース)
>パフォーマンスを最優先に考えるとしたら、SqlDataReaderを使用するのが
最適でしょうか。DataSetを必要としませんから、パフォーマンスは良いと思います。表示するだけになってしまいますが。
ObjectDataSourceのDALで、SqlDataReaderを返すようにしてもいいんじゃないでしょうか。 -
> 元のデータのまま表示するのではなく、加工(変形?)して表示したい場合も
> あると思います。
> データを1件ずつ読み込み、それぞれのデータの内容により、
> 表示を変えたい場合、また、複雑な条件で表示させる・させないの選択をしたい
> 場合など、このような事が出来れば、便利かと思いました。trapemiyaさんが書かれているようにObjectDataSourceを使うのも一つの選択だと思います。
それ以外にもいろいろな手はあります。http://dotnetfan.org/blogs/dotnetfanblog/articles/692.aspx
こんな感じでデータの値によってコントロールの表示/非表示を変えるといったこともできますし、最後のほうに書いているようにpublicなメソッドを呼び出してその結果を表示させることもできます。
GridViewのRowDataBoundイベントを使ってデータを加工することもできますね。 -
英語ですけど、チュートリアル形式になっているのでわかりやすいのがこちらだと思います。
http://weblogs.asp.net/scottgu/archive/2006/01/15/435498.aspxあと、こちらの本がたいへん参考になります。
http://www.amazon.co.jp/exec/obidos/ASIN/4891005157/250-0114532-0770674