質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

バインド

バインドは、一定の方法で複数の事柄が関連付けられている状態を呼びます。また、そのような関連付けを実行する機能自体を指す事もあります。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

1793閲覧

リレーションを使用してGridViewにバインドしたい

yuzuu

総合スコア4

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

バインド

バインドは、一定の方法で複数の事柄が関連付けられている状態を呼びます。また、そのような関連付けを実行する機能自体を指す事もあります。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2020/07/13 15:22

編集2020/07/14 02:05

前提・実現したいこと

店舗情報を表示するシステムを作成しています。
「全店」ボタンを押したとき、全店のリストをGridViewに表示するものです。
作成するうえで使用するテーブルは3つで、
①店舗情報が格納されているテーブルには、「店名」「支店コード」「地域コード」
②支店情報が格納されているテーブルには、「支店コード」「支店名」
③地域情報が格納されているテーブルには、「地域コード」「地域名」
がそれぞれ設定されています。GridViewには①のテーブルを表示したい(削除・編集機能は不要)のですが、②と③を使用して①の「支店コード」と「地域コード」を、②③の「支店名」「地域名」に置き換えて表示したいのです。
①のテーブルのフィールドはNULL不可です。
調べていく中で、リレーションを使用してGridViewにバインドするというものが出てきましたが、いまいち掴めません。別の手段があるのであればそちらでも構いません。
考え方など、ご存じでしたらご教示お願いいたします。
DBはMySQLにあり、GridViewにそれを表示するためにSqlDataSourceは使用していません。

該当のソースコード

protected void Button1_Click(object sender, EventArgs e) //全店 {        //①のテーブル DataTable StoreDt = Common.Store_table();        //②のテーブル DataTable BranchDt = Common.Branch_table();        //③のテーブル DataTable AreaDt = Common.Area_table(); DataRelation BraRelation = new DataRelation("BraRe", StoreDt.Columns["branch_no"], BranchDt.Columns["branch_no"]); DataRelation AreaRelation = new DataRelation("AreaRe", StoreDt.Columns["area_no"], AreaDt.Columns["area_no"]); . .//リレーションでGridViewにバインド? . GridView1.DataSource = StoreDt; GridView1.DataBind(); }

補足情報(FW/ツールのバージョンなど)

ASP.NET
Visual Studio2019
.NetFramework 4.7.2
C#

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/07/13 22:55 編集

質問者さんの言う「リレーション」が何を意味しているか不明ですが、それにこだわらず、join したクエリを使うと言うことでも良いのですよね? 表示だけでいいのですか? (削除・変更は不要?) (1) のテーブルのフィールドの NULL 可・不可はどうなってますか? NULL 可で NULL だった場合どうしたいのですか?
yuzuu

2020/07/14 01:24

コメントありがとうございます。 調べていく中でリレーションというものが出てきたので、別の手段があるのであればそちらでも構いません。 表示だけでいいです。 nullは不可となっています。
退会済みユーザー

退会済みユーザー

2020/07/14 01:33

上記の返答を質問欄を編集して追記願います。コメント欄は初期画面では開いてないので、読まない人がいますから。
yuzuu

2020/07/14 02:00

ありがとうございます。承知しました。
guest

回答1

0

ベストアンサー

「リレーションを使用という手段」にはこだわらなくて、表示だけでよくて、①のテーブルのフィールドは NULL 不可ということですので・・・

INNER JOIN した SELECT クエリ、例えば、

SELECT s.店名, b.支店名, a.地域名 FROM 店舗情報 AS s INNER JOIN 支店情報 AS b ON s.支店コード = b.支店コード INNER JOIN 地域情報 AS a ON s.地域コード = a.地域コード

のようなクエリから DataTable を生成して、今の質問のコードで行っているように GridView にデータバインドしてはいかがでしょう?

不明点がありましたら回答のコメント欄で質問してください

投稿2020/07/14 02:18

編集2020/07/14 02:44
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuzuu

2020/07/14 03:55

ありがとうございました! テーブル同士を結合するやり方があるとは思いもよりませんでした。 ご回答いただいたクエリで実行したところ、思うように動きました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問