dポイントプレゼントキャンペーン実施中!

ASP.NETの勉強のためにチームのメンバーを管理する
ページを作っています。
VisualWebDeveloper2008のVBで作っています。
DBにはチーム名とチームの所属メンバーとメンバー一覧の3テーブルがあります。
これらをJOINしてGridViewに表示させたいと思います。
検索結果ではAチームに3人いる場合、3レコード取得されます。
画面に表示させるときには1レコードでメンバーの列だけ3行にしたいと思います。
Templateを指定するとできそうな気がするのですが、メンバーを検索するデータソースの条件にその行のチームコードを指定する方法が分かりません。
よろしくお願いします。

A 回答 (2件)

GridViewにBindする前に、クエリの結果を格納したDatatableをいじってから


Bindを行えば

1行目| Aチーム | AAA
   |     | BBB
   |     | CCC
2行目| Bチーム | DDD

という表示は可能な気がします。
方法としては単純に

For i as integer = 0 to datatable.rows.count -1
if i > 0 then
if datatable.rows(i)("チーム名").Tostring.equals(datatable.rows(i-1)("チーム名").Tostring) then
datatable.rows(i)("チーム名") = String.Empty
end if
end if
Next i
(Aチーム、Bチームも同様の処理を行う)
この後、GridViewにバインドを行う。

といった感じに、前の行と今の行が同一の文字列なら空文字を入れる
という処理で解決できないでしょうか?

的を射ていない回答であれば申し訳ないですが・・。

この回答への補足

ありがとうございます。
挑戦します。

補足日時:2009/04/17 17:23
    • good
    • 0

>> 画面に表示させるときには1レコードでメンバーの列だけ3行にしたいと思います。



この部分が少しわかりません・・。

SELECT [メンバー一覧].[メンバー名]
FROM [チーム名]
LEFT JOIN [チームの所属メンバー]
ON [チーム名].[チーム名の主キー] = [チームの所属メンバー].[チームの所属メンバーの主キー]
LEFT JOIN [メンバー一覧]
ON [チーム名].[チーム名の主キー] = [メンバー一覧].[メンバー一覧の主キー]
WHERE <検索条件>

で、検索条件に合致したチームメンバー名が
SELECTの結果として3件返ってきたとします。

クエリーの結果
AAAA
BBBB
CCCC

それをGridViewでは1レコードで3行(3列?)で
AAAA|BBBB|CCCC|・・・・

としたいということでしょうか?

>>メンバーを検索するデータソースの条件にその行のチームコードを指定する方法が分かりません。

データソースの条件というかSQLクエリに対する条件に
チームコード(恐らくチーム名テーブルの主キー?)を指定する方法が
わからないということでしょうか?

検索をどのように行うのかイメージをお伝え頂ければもう少しお力になれるかもしれません。

例えば
(1)画面上にはチーム名を入れるテキストボックスがあり、
そこにチーム名を入力すると、該当するチームが表示される。
(2)画面上のGridに表示されたチームをラジオボタン等で選択、
またはボタン等を押下すると画面が遷移し、チームの詳細が閲覧できる。

また、画面上にチームの主キーを表示するかどうかで
内部的に値を持たせるか画面上から主キーを拾って表示するか等で
めんどくささが変わってくると思います。

##DBのレイアウトですが、チーム所属メンバーとメンバー一覧は分けなくても良いのではないでしょうか?
チーム所属メンバーテーブルに
チームの主キー |メンバーの主キー(2)|メンバーの情報

所属メンバーテーブルとメンバー一覧を分ける意図はあるのでしょうか?

この回答への補足

ありがとうございます。

画面のイメージは
チーム名 | メンバー
1行目| Aチーム | AAA
| | BBB
| | CCC
2行目| Bチーム | DDD
・・・
のようにしたいです。テーブルのSELECTは合っています。
GridViewにメンバーがいるか?といわれるといらない気もしますが
これはGridViewの勉強なのでデータの意味はあまり問題にしていません。
現行のシステムで、VBScriptでこのような見栄えを作っているので
移植できるかどうかを試しています。

テーブル構造ですが、
「メンバーはそれぞれ情報をもっていて複数のチームに所属できる」
として、正規化したら3つに分かれました。

補足日時:2009/04/17 13:40
    • good
    • 0

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