none
フォーラムの作り方 RRS feed

  • 質問

  • 現在aspのフォーラムのメインテナンスをする仕事をしています。社内のユーザが各カテゴリーのフォーラムからコメントを入れていくコミュニティーサイトです。いわばこのmsdnのようなものです。aspではhtml内にloopを入れてデータベースから取り出してきた全データを元に、表とトピックを同時に足していくソースになっていますが、それをASP.netで同じようなスレッドを作るにはどうしたらいいでしょうか。dataGridView等を使うのでしょうか。
    2007年3月15日 1:24

回答

  •  KentaroM さんからの引用

    ではdataSetに入れるものは全データを1つのdataSetに入れてもいいのか、あるいはカテゴリーだけのセットと、トピック(スレッド)はまた別なセットを作った方がいいのでしょうか?つまりmsdnですと、asp.netのフォーラム>>トピック、C#.netのフォーラム>>トピックのようなスレッドになっていますので、構成が難しいですね。

    どっとねっとふぁんさんも書かれていますが、Webアプリの場合はそのページに表示するデータだけを読むのが普通です。なぜなら、Webアプリは操作の度にポストバックが発生し、再度データベースからデータを取得しなければならないからです。例えばフォーラムでの発言を表示する際に、ポストバックが発生する度にフォーラムの全データをdataSetへ読み込むのは無駄が多いことになります。

    dataSetは元々、非接続の運用のために設計されたものです。ところが、Webアプリの場合は、Windowsアプリのように非接続のdataSetで作業をしておいて、一度にまとめてデータベースに書き戻すのではなく、1データ作業する度に書き戻すのが普通です。したがって、WebアプリでのdataSetは、データを便利に表示するためのものぐらいに思って良いと思います。つまり、ポストバックの度に必要なデータのみをdataSetに取得して表示するということになります。

    2007年3月15日 7:29
    モデレータ
  • 最初のページでは全カテゴリーとフォーラム名だけをデータベースから取り出せばいいですよね。
    表示に必要なデータだけを取り出す、というのが定石になると思います。

    リンクはHyperLinkコントロールとかを使うようになります。
    GridViewの中でリンクを使う、ということも可能です。
    まずは入門書等を見て、どんなコントロールを使えばどういったものが作れそうなのかといったイメージを持つようにしてみるのがよいと思います。

    #掲示板でひとつずつ答えていくのは大変だし(w

     

    2007年3月16日 1:50

すべての返信

  • DataGridViewはWindows.Formsのクラスですから、、、ASP.NETで使うのならGridViewでしょうね。

    まぁ、それはともかく。
    表示する部分はGridViewでもいいですし、DataListでもいいでしょうね。
    データの入力のところはDetailsViewを使うと楽かな。

    2007年3月15日 2:29
  • わかりました。という事は、データベースから取り出してきたデータをDataSetに入れて、dataList等に入れれば(binding)いいということですね??ではdataSetに入れるものは全データを1つのdataSetに入れてもいいのか、あるいはカテゴリーだけのセットと、トピック(スレッド)はまた別なセットを作った方がいいのでしょうか?つまりmsdnですと、asp.netのフォーラム>>トピック、C#.netのフォーラム>>トピックのようなスレッドになっていますので、構成が難しいですね。

    2007年3月15日 5:09
  • ASP.NETの場合、ページの表示のたびにデータベースからデータを取り出して表示する、というのが基本になります。
    なので、そのページで必要なデータだけを取り出すようにするのがよいでしょうね。

    2007年3月15日 6:10
  •  KentaroM さんからの引用

    ではdataSetに入れるものは全データを1つのdataSetに入れてもいいのか、あるいはカテゴリーだけのセットと、トピック(スレッド)はまた別なセットを作った方がいいのでしょうか?つまりmsdnですと、asp.netのフォーラム>>トピック、C#.netのフォーラム>>トピックのようなスレッドになっていますので、構成が難しいですね。

    どっとねっとふぁんさんも書かれていますが、Webアプリの場合はそのページに表示するデータだけを読むのが普通です。なぜなら、Webアプリは操作の度にポストバックが発生し、再度データベースからデータを取得しなければならないからです。例えばフォーラムでの発言を表示する際に、ポストバックが発生する度にフォーラムの全データをdataSetへ読み込むのは無駄が多いことになります。

    dataSetは元々、非接続の運用のために設計されたものです。ところが、Webアプリの場合は、Windowsアプリのように非接続のdataSetで作業をしておいて、一度にまとめてデータベースに書き戻すのではなく、1データ作業する度に書き戻すのが普通です。したがって、WebアプリでのdataSetは、データを便利に表示するためのものぐらいに思って良いと思います。つまり、ポストバックの度に必要なデータのみをdataSetに取得して表示するということになります。

    2007年3月15日 7:29
    モデレータ
  • わかりました。やってみますです。thanks
    2007年3月15日 8:58
  • フォーラムを作る場合、まず最初のページは全カテゴリー名とフォーラム名が表示されるべきだと考えます。その場合、データベースから過去のデータを1つのデータセットに入れるのでしょうか?それで、直にGridViewに表示させるのでしょうか?スマートタグを使ってやる方法があるのかな?また、各カテゴリーとフォーラムにリンクをつけてアクセスするようにしなければいけないと考えますが、aspのように、htmlに<a href=.....></a>のようにする事はやはりスマートタグに頼るのでしょうか?
    2007年3月16日 1:03
  • 最初のページでは全カテゴリーとフォーラム名だけをデータベースから取り出せばいいですよね。
    表示に必要なデータだけを取り出す、というのが定石になると思います。

    リンクはHyperLinkコントロールとかを使うようになります。
    GridViewの中でリンクを使う、ということも可能です。
    まずは入門書等を見て、どんなコントロールを使えばどういったものが作れそうなのかといったイメージを持つようにしてみるのがよいと思います。

    #掲示板でひとつずつ答えていくのは大変だし(w

     

    2007年3月16日 1:50
  • 確かにひとつずつのやり取りは大変っすよね。でも、いいアドバイスをいただきました。いろいろ参考書等みて構成をしてみます。ありがとうございます。
    2007年3月16日 2:17