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

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

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

Re[2]: GridViewのDropDownListの行番号


(過去ログ 116 を表示中)

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

■68191 / inTopicNo.1)  GridViewのDropDownListの行番号
  
□投稿者/ 5Remedy (1回)-(2013/09/30(Mon) 02:13:29)

分類:[ASP.NET (VB)] 

2013/09/30(Mon) 02:14:42 編集(投稿者)

asp.net(VB)でGridViewにDropDownListを埋めこんでいます。

DropDownlistの項目が(0,1,2,3)の4つあり、
3を選択されたら無効と判断し、前の値(bkValue)に戻すということを実現したいです。

前回の値(bkValue)は行(レコード)毎に配列で保存しています。

前回値(bkValue)に戻す時に、前回値の配列のINNDEXを指定する為どこの行なのか知りたいのですがどう書けばいいのか分かりません。
項目が変更されたDropDownListの行数を知ることは可能でしょうか?

ソースはDropDownListのSelectedIndexChanged内で以下のようにコーディングしています。

Protected Sub DropDownList2_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
If DirectCast(sender, DropDownList).SelectedIndex = 3 Then
DirectCast(sender, DropDownList).SelectedIndex = bkValue(?) ←何行目のDropDownListの前回値か分からない?
End If

GridViewのイベントなら、e.RowIndexで取得できるみたいですが、DropDownListの上記イベントではeのメンバにRowIndexがありませんでした。
よろしくお願いいたします。

引用返信 編集キー/
■68192 / inTopicNo.2)  Re[1]: GridViewのDropDownListの行番号
□投稿者/ WebSurfer (62回)-(2013/09/30(Mon) 08:44:19)
No68191 (5Remedy さん) に返信
> 2013/09/30(Mon) 02:14:42 編集(投稿者)
>
> asp.net(VB)でGridViewにDropDownListを埋めこんでいます。
>
> DropDownlistの項目が(0,1,2,3)の4つあり、
> 3を選択されたら無効と判断し、前の値(bkValue)に戻すということを実現したいです。
>
> 前回の値(bkValue)は行(レコード)毎に配列で保存しています。
>
> 前回値(bkValue)に戻す時に、前回値の配列のINNDEXを指定する為どこの行なのか知りたいのですがどう書けばいいのか分かりません。
> 項目が変更されたDropDownListの行数を知ることは可能でしょうか?
>
> ソースはDropDownListのSelectedIndexChanged内で以下のようにコーディングしています。
>
> Protected Sub DropDownList2_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
> If DirectCast(sender, DropDownList).SelectedIndex = 3 Then
> DirectCast(sender, DropDownList).SelectedIndex = bkValue(?) ←何行目のDropDownListの前回値か分からない?
> End If
>
> GridViewのイベントなら、e.RowIndexで取得できるみたいですが、DropDownListの上記イベントではeのメンバにRowIndexがありませんでした。
> よろしくお願いいたします。
>

いろいろ不明点が多すぎるのでハズレかもしれませんが・・・

GridView.EditIndex プロパティから取得できませんか?



回答者は、掲示板に書いてある情報以外は何も知り得ないという認識
を持って、どのような情報を提供すれば回答者が質問者さんの状況を
的確に把握でき、的を得た回答ができるかよく考えた上で質問を書い
ていただければと思います。

どのような情報を提供すればいいかというと、例えば:

そもそも、ユーザー入力に DropDownList を使う目的は、無効な値を
入力できないようにすることによってユーザビリティを高めることだ
と思いますが、何故、今回、無効な値を選択できるようにするのでし
ょうか? まず、そのあたりから説明されると、より的を得た回答が
得られると思います。

GridView のある行を編集モードにすると DropDownList が表示され
るのだと想像してますが、そのあたり何も書いてありません。

どのようにしてポストバックしているのでしょうか? DropDownList
の AutoPostBack を使うのと、GridView の各行に配置した Button
を使うのとでは RowIndex の取得方法が違ってきます。

また、「前回の値(bkValue)」とは何か、「行(レコード)毎に配列で
保存」とありますが、具体的にどうやっているのか(そもそも、VB.NET
の配列では保存できないはず・・・ViewState に保存しているのか?)
もよく分かりません。

引用返信 編集キー/
■68198 / inTopicNo.3)  Re[2]: GridViewのDropDownListの行番号
□投稿者/ 5Remedy (2回)-(2013/09/30(Mon) 12:50:22)
No68192 (WebSurfer さん) に返信

説明不足で申し訳ありませんでした。

>
> そもそも、ユーザー入力に DropDownList を使う目的は、無効な値を
> 入力できないようにすることによってユーザビリティを高めることだ
> と思いますが、何故、今回、無効な値を選択できるようにするのでし
> ょうか?

DropDownListにはDBから取得した値を表示しています。
DBに無効な値が入っていればそれをDropDownListのSelectedIndexとして表示しなければいけません。
無効な値はユーザーから選択してほしくないけれどDBには存在するものなので、DropDownListの項目から削除すると仕様的に変だと思っていました。
しかし、ユーザーの使いやすさを考えたら、選択してはいけない項目を表示するのはおかしいと気づきました。

DBに無効な値が入っているレコードのDropDownListのitemには無効な値の項目を追加するけれど、それ以外のレコードのDropDownListには無効な値の項目を追加しないことにしました。

次に質問するときは、回答者さんが読んで分かるように詳しく書きます。
ありがとうございました。

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -