2009-05-03 19 views
0

私はDropDownListBoxを2つ持っています.1つはddlDay、もう1つはddlMonthです。その名前が示すように、ddlDayの値は01から31(動的ではない)で、ddlMonthの値は01から12です。これらの値は動的に設定されません。DropDownListバインディングの問題

ページが読み込まれると、dbから値を取得しています。値によっては、値ddlDay.SelectedItem.Value = the value from the db to setを使用して項目を選択しています。

以下に示すコードは、If Not Page.IsPostback Then...の幸運のない文でテストされました。

ただし、初めてページを読み込んだ場合は何も起こりません。ページをリフレッシュしてポストバックが発生すると、値が正しくバインドされます。

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

Private Sub loadInterview() 
    If Request.QueryString("iID") = "" Or Request.QueryString("iID") Is Nothing Then 
     Response.Redirect("interviews_list.aspx") 
    Else 
     Dim int As New hh.Interviews 
     int = hh.Interviews.ReturnSingleInterview(Request.QueryString("iID")) 

     ddlDay.SelectedItem.Value = int.InterviewDate.Day.ToString("00") 
     ddlMonth.SelectedItem.Value = int.InterviewDate.Month.ToString("00") 
     txtYear.Text = int.InterviewDate.Year 

     txtPerson.Text = int.InterviewPerson 
     txtTitle.Text = int.InterviewTitle 
     txtText.Text = int.InterviewText 

    End If 
+0

nitpick ... "int"は他の言語のIntegerの共通予約識別子で、混乱を減らすために変更することを検討します。 hh名前空間とは何ですか? –

+0

ありがとうございました、警告のおかげでもっと意味のある言葉に変更しました。はいhhは名前空間です... –

答えて

1

初期値を設定するためにこれを試してみてください:

ddlDay.ClearSelection() 
ddlDay.Items.FindByValue(int.InterviewDate.Day.ToString("00")).Selected = True 

ddlMonth.ClearSelection() 
ddlMonth.Items.FindByValue(int.InterviewDate.Month.ToString("00")).Selected = True 

注: ClearSelectionメソッドを持つHttpException例外が 'DropDownListコントロールで選択した複数の項目を持つことはできません。' 回避メッセージ。

EDIT 2:

ddlItems.SelectedItem.Value = "Item 1" 

あなたのドロップダウンリスト:あなたがそのようなあなたのddlItems.SelectedItem.Valueに "アイテム1" に設定した場合

<asp:DropDownList ID="ddlItems" runat="server"> 
    <asp:ListItem Text="Item 1" Value="Item 1"></asp:ListItem> 
    <asp:ListItem Text="Item 2" Value="Item 2" Selected="true"></asp:ListItem> 
    <asp:ListItem Text="Item 3" Value="Item 3"></asp:ListItem> 
</asp:DropDownList> 

は、あなたがこのドロップダウンリストを持っていると仮定次のようになります。

<asp:DropDownList ID="ddlItems" runat="server"> 
    <asp:ListItem Text="Item 1" Value="Item 1"></asp:ListItem> 
    <asp:ListItem Text="Item 2" Value="Item 1" Selected="true"></asp:ListItem> 
    <asp:ListItem Text="Item 3" Value="Item 3"></asp:ListItem> 
</asp:DropDownList> 

つまり、ddlItems.Selec tedItemは、ドロップダウンの選択項目を参照します。

+0

その例外はとても迷惑でした。私は彼らがそれを修正してもはやその例外を投げないようにしていると思います。あるいは、私はいつも選択を最初に解除するように訓練を受けました。 –

+0

ありがとう、それは働いた。しかし、私はSelectedItem.ValueとItems.FindByValueの違いをさまよっています –

関連する問題