DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DropDownList

  • 題名: DropDownList
  • 著者: 匝爪旱
  • 日時: 2003/12/03 21:14:53
  • ID: 1659
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
分類:[.NET]

まだ初心者のチルドレンです。
Webアプリケーション(VB.NET)で同一画面に2つのDropDownListを作成しました。
(ID)は"DD1","DD2"と定義し、"DD1"が選択されたときに同じ値を"DD2"にセット
させたいのですが、変ってくれません。なぜでしょうか?
Private Sub DD1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DD1.SelectedIndexChanged
DD2.SelectedItem.Text = DD1.SelectedItem.Text
End Sub

※DataSourceの内容は、"DD1"と"DD2"同じです。

よろしくお願いします。
  • 題名: Re[1]: DropDownList
  • 著者: 琴
  • 日時: 2003/12/04 11:26:24
  • ID: 1661
  • この記事の返信元:
  • この記事への返信:
  • ツリーを表示
■No1659に返信(匝爪旱さんの記事)
> まだ初心者のチルドレンです。
> Webアプリケーション(VB.NET)で同一画面に2つのDropDownListを作成しました。
> (ID)は"DD1","DD2"と定義し、"DD1"が選択されたときに同じ値を"DD2"にセット
> させたいのですが、変ってくれません。なぜでしょうか?
> Private Sub DD1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DD1.SelectedIndexChanged
> DD2.SelectedItem.Text = DD1.SelectedItem.Text
> End Sub
>
> ※DataSourceの内容は、"DD1"と"DD2"同じです。
>
> よろしくお願いします。

リストの内容が全く同じなのであれば
> DD2.SelectedItem.Text = DD1.SelectedItem.Text
ではなくて
DD2.SelectedIndex = DD1.SelectedIndex
でどうでしょう?
こちらで試したところ、これで動作を確認しました。
> リストの内容が全く同じなのであれば
>>DD2.SelectedItem.Text = DD1.SelectedItem.Text
> ではなくて
> DD2.SelectedIndex = DD1.SelectedIndex
> でどうでしょう?
> こちらで試したところ、これで動作を確認しました。

でもダメでした。
何か足りないのでしょうか?
ちなみにdatasorceの内容の設定は

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
   Dim values As ArrayList = New ArrayList()
   values.Add("8:00")
   values.Add("8:30")
   values.Add("9:00")
   values.Add("9:30")
   values.Add("10:00")
   DD1.DataSource = values
   DD1.DataBind()
end sub

としています。
何度もすみません、お願いします。

※一番最初のペンネームが文字化けしてすみませんでした。
  • 題名: Re[3]: ダメでした
  • 著者: 琴
  • 日時: 2003/12/04 13:42:45
  • ID: 1666
  • この記事の返信元:
  • この記事への返信:
  • ツリーを表示
■No1663に返信(チルドレンさんの記事)
>>リストの内容が全く同じなのであれば
> >>DD2.SelectedItem.Text = DD1.SelectedItem.Text
>>ではなくて
>> DD2.SelectedIndex = DD1.SelectedIndex
>>でどうでしょう?
>>こちらで試したところ、これで動作を確認しました。
>
> でもダメでした。
> 何か足りないのでしょうか?
> ちなみにdatasorceの内容の設定は
>
> Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
>    Dim values As ArrayList = New ArrayList()
>    values.Add("8:00")
>    values.Add("8:30")
>    values.Add("9:00")
>    values.Add("9:30")
>    values.Add("10:00")
>    DD1.DataSource = values
>    DD1.DataBind()
> end sub
>
> としています。
> 何度もすみません、お願いします。
>
> ※一番最初のペンネームが文字化けしてすみませんでした。

DD2のDataSourceはセットされているのでしょうか?
DD2.DataSource = values
を追加してみてください。
> >>リストの内容が全く同じなのであれば
>>>>DD2.SelectedItem.Text = DD1.SelectedItem.Text
> >>ではなくて
> >> DD2.SelectedIndex = DD1.SelectedIndex
> >>でどうでしょう?
> >>こちらで試したところ、これで動作を確認しました。
>>
>>でもダメでした。
>>何か足りないのでしょうか?
>>ちなみにdatasorceの内容の設定は
>>
>>Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
>>   Dim values As ArrayList = New ArrayList()
>>   values.Add("8:00")
>>   values.Add("8:30")
>>   values.Add("9:00")
>>   values.Add("9:30")
>>   values.Add("10:00")
>>   DD1.DataSource = values
>>   DD1.DataBind()
>>end sub
>>
>>としています。
>>何度もすみません、お願いします。
>>
> DD2のDataSourceはセットされているのでしょうか?
> DD2.DataSource = values
> を追加してみてください。

DD2にもそのようにセットしております。
なんでなんでしょうか?
DD2を再表示とかする必要はあるのでしょうか?
■No1668に返信(チルドレンさんの記事)
>>DD2のDataSourceはセットされているのでしょうか?
>> DD2.DataSource = values
>>を追加してみてください。
>
> DD2にもそのようにセットしております。
> なんでなんでしょうか?
> DD2を再表示とかする必要はあるのでしょうか?

まずはWindowsアプリケーションと勘違いしていた事をお詫びします。
(さっき気が付きました・・・本当にごめんなさい)

で、問題の対処方ですが、
1.Page_Loadメソッド内のDataSourceのセットする一連の処理をPage_Initメソッドに移してください。
  (Page_Loadメソッドにあると再表示するたびにDataSourceが再セットされるため)

2.実行中、DD1の項目を選択しても画面が再表示されない場合は、
  DD1のAutoPostBackプロパティをTrueにして下さい。

これでうまく動作すると思います。
こちらでも動作を確認しました。 以下がソースコードです。


Public Class WebForm1
Inherits System.Web.UI.Page
Protected WithEvents DD1 As System.Web.UI.WebControls.DropDownList
Protected WithEvents DD2 As System.Web.UI.WebControls.DropDownList

#Region " Web フォーム デザイナで生成されたコード "

'この呼び出しは Web フォーム デザイナで必要です。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
' CODEGEN: このメソッド呼び出しは Web フォーム デザイナで必要です。
' コード エディタを使って変更しないでください。
InitializeComponent()
Dim values As ArrayList = New ArrayList()
values.Add("8:00")
values.Add("8:30")
values.Add("9:00")
values.Add("9:30")
values.Add("10:00")
DD1.DataSource = values
DD1.DataBind()
DD2.DataSource = values
DD2.DataBind()
End Sub

#End Region

Private Sub DD1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DD1.SelectedIndexChanged
DD2.SelectedIndex = DD1.SelectedIndex
End Sub
End Class
> まずはWindowsアプリケーションと勘違いしていた事をお詫びします。
> (さっき気が付きました・・・本当にごめんなさい)
>
> で、問題の対処方ですが、
> 1.Page_Loadメソッド内のDataSourceのセットする一連の処理をPage_Initメソッドに移してください。
>   (Page_Loadメソッドにあると再表示するたびにDataSourceが再セットされるため)
>
> 2.実行中、DD1の項目を選択しても画面が再表示されない場合は、
>   DD1のAutoPostBackプロパティをTrueにして下さい。
>
> これでうまく動作すると思います。
> こちらでも動作を確認しました。 以下がソースコードです。
>
>
> Public Class WebForm1
> Inherits System.Web.UI.Page
> Protected WithEvents DD1 As System.Web.UI.WebControls.DropDownList
> Protected WithEvents DD2 As System.Web.UI.WebControls.DropDownList
>
> #Region " Web フォーム デザイナで生成されたコード "
>
> 'この呼び出しは Web フォーム デザイナで必要です。
> <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
>
> End Sub
>
> Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
> ' CODEGEN: このメソッド呼び出しは Web フォーム デザイナで必要です。
> ' コード エディタを使って変更しないでください。
> InitializeComponent()
> Dim values As ArrayList = New ArrayList()
> values.Add("8:00")
> values.Add("8:30")
> values.Add("9:00")
> values.Add("9:30")
> values.Add("10:00")
> DD1.DataSource = values
> DD1.DataBind()
> DD2.DataSource = values
> DD2.DataBind()
> End Sub
>
> #End Region
>
> Private Sub DD1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DD1.SelectedIndexChanged
> DD2.SelectedIndex = DD1.SelectedIndex
> End Sub
> End Class

はぁ、ダメでした。
何回もご指摘された内容を確認したんですが。
しかし、ボタンを押すとOKです。
そのボタンコントロールには何も定義してません。
ナゼできないのか、ちょっとアセリ始めてます。
お願いします。
  • 題名: Re[7]: またダメでした
  • 著者: チルドレン
  • 日時: 2003/12/04 19:42:15
  • ID: 1674
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
> はぁ、ダメでした。
> 何回もご指摘された内容を確認したんですが。
> しかし、ボタンを押すとOKです。
> そのボタンコントロールには何も定義してません。
> ナゼできないのか、ちょっとアセリ始めてます。
> お願いします。

琴さんすみません、できました。
AutoPostBackプロパティの設定ミスでした。
ほんとうにありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板