none
コードでGridViewへ1行ずつデータを追加 RRS feed

  • 質問

  • SqlDataReaderで取得したデータをコーディングにより、DataBindではなく、一行ずつ

    GridView1へ追加したいのです。コーディングの方法を教えて頂きたいのですが。

    2006年6月4日 10:05

回答

すべての返信

  • fjdsskl さん、こんにちは。

     fjdsskl さんからの引用
    SqlDataReaderで取得したデータをコーディングにより、DataBindではなく、一行ずつGridView1へ追加したいのです。コーディングの方法を教えて頂きたいのですが。

    DataGridView はただ表示しているだけですので、
    DataGridView に直接追加するという考えはないと思います。
    表示している、'DataSource' 自体に追加します。

    もちろん、コストは高いと思います。

    2006年6月4日 11:39
  •  fjdsskl さんからの引用

    SqlDataReaderで取得したデータをコーディングにより、DataBindではなく、一行ずつ

    GridView1へ追加したいのです。コーディングの方法を教えて頂きたいのですが。

    通常、この場合ですと、真っ先に考えるのはビジネスロジックの使用できるObjectDataSourceの使用ですが、それではダメなんでしょうか?

    どうしてもSqlDataReaderが使用したいということであれば、GridViewのDataSourceにはDataSetをバインドできますから、データテーブルを必要な行のみにしてしまえば良いでしょう。これに関してはASP.NET 1.1のDataGridと同じです。

    いや、そうではなく、どうしてもDataBindを使いたくないという理由があるなら、おっしゃって下さい。やったことはありませんが、こちらでも試してみたいと思います。
    考え方としては、GridViewRowを作成して、一行ずつGridViewに追加してイメージになると思います。

    2006年6月5日 0:55
    モデレータ
  • じゃんぬねっとさん、trapemiyaさん、有難うございます。

    今、必要にせまられているわけではないのですが、
    あるDBのデータをASP.Net2.0で表示する際、
    元のデータのまま表示するのではなく、加工(変形?)して表示したい場合も
    あると思います。
    データを1件ずつ読み込み、それぞれのデータの内容により、
    表示を変えたい場合、また、複雑な条件で表示させる・させないの選択をしたい
    場合など、このような事が出来れば、便利かと思いました。
    バインドでもイベント ハンドラによって可能であれば、イベント ハンドラで
    行いたいと思います。

    また、ObjectDataSourceの使用方法がよくわかっておりません。
    SQL Serverの場合は、SqlDataSource、Accessの場合は、AccessDataSource、
    それ以外は、ObjectDataSourceと思ってよろしいでしょうか?
    ビジネスロジックが使用できるとは、??

    また、SQL Serverのデータをブラウザへ表示(更新不要)する場合、
    パフォーマンスを最優先に考えるとしたら、SqlDataReaderを使用するのが
    最適でしょうか。

    質問が増えてしまったようで、すみません。よろしくお願い致します。

    2006年6月5日 11:43
  • >元のデータのまま表示するのではなく、加工(変形?)して表示したい場合も
    あると思います。

    そのために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を返すようにしてもいいんじゃないでしょうか。

    2006年6月5日 18:45
    モデレータ
  • > 元のデータのまま表示するのではなく、加工(変形?)して表示したい場合も
    > あると思います。
    > データを1件ずつ読み込み、それぞれのデータの内容により、
    > 表示を変えたい場合、また、複雑な条件で表示させる・させないの選択をしたい
    > 場合など、このような事が出来れば、便利かと思いました。

    trapemiyaさんが書かれているようにObjectDataSourceを使うのも一つの選択だと思います。
    それ以外にもいろいろな手はあります。

    http://dotnetfan.org/blogs/dotnetfanblog/articles/692.aspx
    こんな感じでデータの値によってコントロールの表示/非表示を変えるといったこともできますし、最後のほうに書いているようにpublicなメソッドを呼び出してその結果を表示させることもできます。
    GridViewのRowDataBoundイベントを使ってデータを加工することもできますね。

     

    2006年6月6日 2:09
  • みなさん、本当に有難うございます。

    初心者ですが、ASP.NET 2.0で業務用AP作る時は
    ObjectDataSourceが肝という気がしてきました。

    クラスを作って、型付DataSetを返すようなpublicメソッドの定義を行うなどの情報がネットにありましたが、どのようにコーディングしたらよいか、わかっていません。

    コーディングのサンプルや参考になるサイトがありましたら、ぜひ教えて頂きたいのですが。

    2006年6月6日 12:54
  • ObjectDataSourceは、カスタムページングの実現方法としてよく説明されているので、ObjectDataSourceとカスタムページングをキーワードに検索されると、サンプルが見つかると思います。

    #ただいま出張中につき、手元に資料がありません。m(_ _)m

    2006年6月6日 15:38
    モデレータ
  • 英語ですけど、チュートリアル形式になっているのでわかりやすいのがこちらだと思います。
    http://weblogs.asp.net/scottgu/archive/2006/01/15/435498.aspx

    あと、こちらの本がたいへん参考になります。
    http://www.amazon.co.jp/exec/obidos/ASIN/4891005157/250-0114532-0770674

    2006年6月7日 1:57
  •  

    「Microsoft Visual Studio 2005によるWebアプリケーション構築技法」

    を購入しようと思います。

    英語のサイトも大変参考になりそうです。

    有難うございました。

    2006年6月7日 14:13