C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: GridViewのDataKeyName?


(過去ログ 138 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■81200 / inTopicNo.1)  GridViewのDataKeyName?
  
□投稿者/ nanamama (1回)-(2016/09/02(Fri) 07:59:41)

分類:[ASP.NET (VB)] 

お世話になります。
初心者です
GridView1のDataKeyNameにグループ名,商品名と二つのフィールドを指定しています。

同じページに
GridView2 DataKeyNameにグループ名
GridView3 DataKeyNameに商品名

を設置しましたがGridView2しかきちんと表示してくれません
GridView1のDataKeyNameを商品名,グループ名と逆に指定するとGridView3しかきちんと表示してくれません

GridView1で選択された行に対して
GridView2はグループ名
GridView3は商品名
でフィルタをかけて表示させるにはどうすれば良いですか?
引用返信 編集キー/
■81201 / inTopicNo.2)  Re[1]: GridViewのDataKeyName?
□投稿者/ WebSurfer (1017回)-(2016/09/02(Fri) 09:18:44)
No81200 (nanamama さん) に返信

GridView.DataKeyNames プロパティは、MSDN ライブラリに書いてあるように、

"GridView コントロールに表示される項目の主キー フィールドの名前が格納された
配列を取得または設定します"

というものです。

質問文を見ると DataKeyNames プロパティで GridView に表示するレコードをフィル
タしようとしているように見えますが、もしそうであるとすると勘違いがあるような
気がします。

開発環境(OS, .NET, IIS, Visual Studio のバージョン、DB サーバーとそのバージ
ョン、ブラウザを使っているなら何かなど)、DB のテーブルのスキーマ等何も書いて
ないので(最初に書いてくださいね)ハズレかもしれませんが、以下の記事の応用で
可能なのではないかと思います。検討ください。

DropDownList を使って絞込み
http://surferonwww.info/BlogEngine/post/2011/07/17/Showing-records-selected-by-DropDownLists-into-GridView.aspx
引用返信 編集キー/
■81204 / inTopicNo.3)  Re[2]: GridViewのDataKeyName?
□投稿者/ nanamama (2回)-(2016/09/02(Fri) 09:54:19)
No81201 (WebSurfer さん) に返信
> ■No81200 (nanamama さん) に返信
>
> GridView.DataKeyNames プロパティは、MSDN ライブラリに書いてあるように、
>
> "GridView コントロールに表示される項目の主キー フィールドの名前が格納された
> 配列を取得または設定します"
>
> というものです。
>
> 質問文を見ると DataKeyNames プロパティで GridView に表示するレコードをフィル
> タしようとしているように見えますが、もしそうであるとすると勘違いがあるような
> 気がします。
はい作ってる最中はそう思わなかったですが検証するとそんな動きに見えました。

> 開発環境(OS, .NET, IIS, Visual Studio のバージョン、DB サーバーとそのバージ
> ョン、ブラウザを使っているなら何かなど)、DB のテーブルのスキーマ等何も書いて
> ないので(最初に書いてくださいね)ハズレかもしれませんが、以下の記事の応用で
> 可能なのではないかと思います。検討ください。
大変申し訳ありません
win xp
.net2.0
Visual Studio 2005 standard

GridView1のSQL
SELECT 流通システム.協力者, 流通システム.商品名, COUNT(流通システム.出品日) AS 出品日個数, COUNT(流通システム.入金日) AS 入金日個数, 出品日個数 - 入金日個数 AS 差引, 検品者一覧.検品氏名 FROM (流通システム INNER JOIN 検品者一覧 ON 流通システム.出品者 = 検品者一覧.検品氏名) GROUP BY 流通システム.商品名, 流通システム.検品払い, 検品者一覧.検品氏名, 流通システム.協力者 HAVING (流通システム.検品払い IS NULL) ORDER BY COUNT(流通システム.入金日) DESC

GridView2のSQL
SELECT [仕入日], [仕入グループ], [品名], [特徴], [数量], [売主NO], [仕入額] FROM [仕入れマスター] WHERE ([仕入グループ] LIKE '%' + ? + '%')

GridView3のSQL
SELECT [商品名], [利益], [協力者], [出品者], [ファイルパス], [出品名], [ID] FROM [流通システム] WHERE ([商品名] LIKE '%' + ? + '%')

> DropDownList を使って絞込み
> http://surferonwww.info/BlogEngine/post/2011/07/17/Showing-records-selected-by-DropDownLists-into-GridView.aspx
どの様に応用すれば良いのか。。。
あと一つのgridviewの表示だけなのですが。。。

引用返信 編集キー/
■81207 / inTopicNo.4)  Re[3]: GridViewのDataKeyName?
□投稿者/ WebSurfer (1020回)-(2016/09/02(Fri) 10:49:06)
No81204 (nanamama さん) に返信

> GridView1で選択された行に対して
> GridView2はグループ名
> GridView3は商品名
> でフィルタをかけて表示させるにはどうすれば良いですか?

ということを実現するには、

(1) GridView1 の各行に Select ボタンを配置。

(2) それがクリックされるとポストバックされ GridView.SelectedIndexChanged が発生。

(3) そのイベントハンドラで GridView.SelectedRow プロパティを使って選択された行の
  GridViewRow オブジェクトを取得。

(4) GridViewRow オブジェクトから GridView1, GridView2 用の SELECT クエリの WHERE
  句のパラメータに代入するデータ([仕入グループ] と [商品名])を取得。

(5) GridView2, GridView3 のデータソースコントロール(SqlDataSource など)の SelectParameters
  に上記 (4) で取得したデータを渡せるように設定する。

ということが考えられます。

全体の作りがどうなっているのか不明なので質問者さんの実情には合わないかもしれません
が、上記の案を検討して問題・疑問があればまた質問してください

ところで、

> GridView2のSQL
> SELECT [仕入日], [仕入グループ], [品名], [特徴], [数量], [売主NO], [仕入額] FROM [仕入れマスター] WHERE ([仕入グループ] LIKE '%' + ? + '%')

> GridView3のSQL
> SELECT [商品名], [利益], [協力者], [出品者], [ファイルパス], [出品名], [ID] FROM [流通システム] WHERE ([商品名] LIKE '%' + ? + '%')

疑問符 (?) の位置パラメータマーカーを使っているということは、DB は Access ですか?

LIKE 句を使わなければならない理由はあるのですか?
引用返信 編集キー/
■81210 / inTopicNo.5)  Re[4]: GridViewのDataKeyName?
□投稿者/ nanamama (3回)-(2016/09/02(Fri) 12:06:45)
No81207 (WebSurfer さん) に返信
> ■No81204 (nanamama さん) に返信
>
>>GridView1で選択された行に対して
>>GridView2はグループ名
>>GridView3は商品名
>>でフィルタをかけて表示させるにはどうすれば良いですか?
>
> ということを実現するには、
>
> (1) GridView1 の各行に Select ボタンを配置。
>
> (2) それがクリックされるとポストバックされ GridView.SelectedIndexChanged が発生。
>
> (3) そのイベントハンドラで GridView.SelectedRow プロパティを使って選択された行の
>   GridViewRow オブジェクトを取得。
>
> (4) GridViewRow オブジェクトから GridView1, GridView2 用の SELECT クエリの WHERE
>   句のパラメータに代入するデータ([仕入グループ] と [商品名])を取得。
>
> (5) GridView2, GridView3 のデータソースコントロール(SqlDataSource など)の SelectParameters
>   に上記 (4) で取得したデータを渡せるように設定する。
>
> ということが考えられます。
>
> 全体の作りがどうなっているのか不明なので質問者さんの実情には合わないかもしれません
> が、上記の案を検討して問題・疑問があればまた質問してください
>
> ところで、
>
>>GridView2のSQL
>>SELECT [仕入日], [仕入グループ], [品名], [特徴], [数量], [売主NO], [仕入額] FROM [仕入れマスター] WHERE ([仕入グループ] LIKE '%' + ? + '%')
>
>>GridView3のSQL
>>SELECT [商品名], [利益], [協力者], [出品者], [ファイルパス], [出品名], [ID] FROM [流通システム] WHERE ([商品名] LIKE '%' + ? + '%')
>
> 疑問符 (?) の位置パラメータマーカーを使っているということは、DB は Access ですか?
はいaccessです

> LIKE 句を使わなければならない理由はあるのですか?
ないです

問題を棚上げ致しまして一様解決いたしました
解決方法はGridView2に選択ボタンを設置しGridView3を表示させることにしました。
1クリック増えますがこれで回避致します。

有難うございました
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -