アプリ版:「スタンプのみでお礼する」機能のリリースについて

VS2005 WinXP pro

下のようにページ表示時にDropDownListに年を入れています。

しかし、DropDownListを何に変更してもSelectedIndexした
値が取れてしまい困っています

(今なら常に2008が取れてしまう)

本当なら2009を選択したときは下の関数で
2009と表示したいのです。

お力添えお願いいたします。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load


'--------------------------------------------------------------------------------------
' 年をコンボボックスに追加

'--------------------------------------------------------------------------------------
Dim sNum As Integer = 0
Dim y As Integer
For y = 2007 To Year(Now) + 3
cmbYear.Items.Add(New ListItem(y, y))
If y = Year(Now) Then
cmbYear.SelectedIndex = sNum←ここを消すと正しく動く
End If
sNum += 1
Next
End Sub

Protected Sub btnEdit_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles btnEdit.Click

'--------------------------------------------------------------------------------------
' 選択項目の取得

'--------------------------------------------------------------------------------------
MsgBox(cmbYear.Items.Item(cmbYear.SelectedIndex).Value)2008
MsgBox(cmbYear.SelectedValue)←2008 どちらも2008

End Sub


以上、よろしくお願い致します。

A 回答 (2件)

Page_Loadイベントのなかで コンボボックスを設定する際に PostBackしてきたのかそれとも初めてPage_Loadが呼ばれたのかを判断しましょう



Asp.NETの場合 PostBack時にもPage_Loadイベントが呼ばれます

Page_Loadの初期化処理を
if IsPostBack = False then
  ' 初めて呼ばれた場合
  ' ここでコンボボックスの初期設定を行う
Else
  ' 何かのユーザーアクションなどによりPostBackした場合
End if
といった具合しましょう
    • good
    • 1
この回答へのお礼

ありがとうございますー!

教えていただいたとおりで解決しました.
ポストバック・・・・
覚えておきます!

返信遅くなってしまいすいませんでした.

お礼日時:2008/05/30 19:40

Page_Loadイベントは、表示時に必ず実行されるので


btnEdit_Clickイベント後の再表示(PostBack時)で
また、「2008」を設定しているのではないでしょうか?

*Page_Loadイベントにブレイクポイントを張って確認してみては
いかがでしょうか?

redfox63さんの言う様に、btnEdit_Clickイベント後の再表示
(PostBack時)では「2008」をセットしないようにすれば
良いのでは?と思います。
    • good
    • 0
この回答へのお礼

はい!ありがとうございます.

おかげさまで解決で着ました.

お礼日時:2008/05/30 19:41

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