- PR -

DropDownListの項目を選択しても、onSelectedIndexChangedで指定した関数へ制御がわたりません。

投稿者投稿内容
OpS
ベテラン
会議室デビュー日: 2003/12/09
投稿数: 50
投稿日時: 2004-01-28 10:41
コントロールでは
<asp:dropdownlist id="DropShain"runat="server" onSelectedIndexChanged="DropShain_SelectedIndexChanged" AutoPostBack="True">

コードでは
Sub DropShain_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)

Page_Loadメソッドで毎回新たにDataBind呼び出していません。
どうして制御がわたらないのかがわかりません。
記述に問題があるのでしょうか。

宜しくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-01-28 10:58
Sub DropShain_SelectedIndexChanged( _
ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles DropShain.SelectedIndexChanged

とか?
OpS
ベテラン
会議室デビュー日: 2003/12/09
投稿数: 50
投稿日時: 2004-01-28 14:13
ありがとうございます。
Handles DropShain.SelectedIndexChangedをつけました。
状況は変わりません。
DropDownListのスクロールさせて、別アイテムを選択しますと、
通常はその選択したアイテムの番号がDropDownListのSelectedIndexに
なると思いますが、DropDownListの先頭アイテムitem(0)が選択した
ような動作になります。なぜこうなるのかがわかりかねております。

以上、宜しくお願いします。
Crime
常連さん
会議室デビュー日: 2002/08/26
投稿数: 34
お住まい・勤務地: Japan
投稿日時: 2004-01-28 16:13
こんにちは。

とりあえずPage_Loadメソッドの中身だけでも簡単に記述されて見てはどうでしょうか。
現在の情報だけでは皆さん推測しか出来ないと思いますので。
OpS
ベテラン
会議室デビュー日: 2003/12/09
投稿数: 50
投稿日時: 2004-01-28 16:26
はい、承りました。
Page_Loadメソッドの中身を記述します。

If Not IsPostBack Then
cmd = New OleDbCommand(strSQLShain, con2)
cmd.CommandType = CommandType.StoredProcedure

With cmd.Parameters
.Add("@BUSHYO_CODE", OleDbType.Char, 4).Value = "0100"
End With

ds2 = New DataSet()
da.SelectCommand = cmd
da.Fill(ds2, "SHAIN")

With DropShain
.DataSource = ds2.Tables("SHAIN")
.DataValueField = "BUSHYO_CODE"
.DataTextField = "SNAME"
.DataBind()
End With
End If


以上です。宜しくお願いします。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-01-28 16:39
引用:

さ・おおのさんの書き込み (2004-01-28 10:41) より:
コントロールでは
コード:

<asp:dropdownlist id="DropShain"runat="server"
onSelectedIndexChanged="DropShain_SelectedIndexChanged" AutoPostBack="True">




Handlesを付けたならば、太字の部分を削除してみませんか。

と思ったのですが関係ないみたいですね。

VS.NETが自動で作るイベントプロシージャは
スコープがPrivateになっていて、上記のタグだと起動時に怒られます。
Protectedに変更すると、Handlesが付いてなくても、イベントプロシージャが動作します。

というわけで、

@本当に通って無いのか、イベントプロシージャの入り口でブレイクしてみる。
A通ってたら、その中のコードを疑う。
B通ってなかったら、その他のコードを疑う。

といった事をやってみませんか?
って、既にやっていたとしたら、すいません。

[ メッセージ編集済み 編集者: NAL-6295 編集日時 2004-01-28 16:53 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-01-28 17:03
引用:

さ・おおのさんの書き込み (2004-01-28 14:13) より:

DropDownListのスクロールさせて、別アイテムを選択しますと、
通常はその選択したアイテムの番号がDropDownListのSelectedIndexに
なると思いますが、DropDownListの先頭アイテムitem(0)が選択した
ような動作になります。なぜこうなるのかがわかりかねております。


 まず確認ですが、
1.ポストバックは発生しているのでしょうか
2.イベントハンドラはコールされているでしょうか

この2点がYesなら、
3.ドロップダウンに設定したアイテムのValueが重なっていないでしょうか


 私がやって、30分ほど悩んでいたことですが、
text="アイテム1" value="0"
text="アイテム2" value="1"
...
text="アイテム空" value="0"

と設定していたんですね。で、「アイテム空」を選択したのに「アイテム1」が選択されたことになる…
OpS
ベテラン
会議室デビュー日: 2003/12/09
投稿数: 50
投稿日時: 2004-01-28 17:44
引用:

NAL-6295さんの書き込み (2004-01-28 16:39) より:
@本当に通って無いのか、イベントプロシージャの入り口でブレイクしてみる。
A通ってたら、その中のコードを疑う。
B通ってなかったら、その他のコードを疑う。



Private Sub DropShain_SelectedIndexChangedでブレイクポイントを設定して動作させましたところ、現象がつかみきれてはおりませんが、何回かのうち数回、ブレイクするように
なります。

これが、不思議でなりません。

スキルアップ/キャリアアップ(JOB@IT)