2009-05-03 2 views
0

У меня есть два DropDownListBoxes, один из которых называется ddlDay, а другой - 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

Да deviant, спасибо за предупреждение, я изменил его на более содержательное слово и да hh - это пространство имен ... –

ответ

1

Попробуйте задать начальные значения: метод ClearSelection избегает исключения HttpException с:

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

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

Примечание 'не может иметь несколько элементов, выбранных в DropDownList. сообщение.

EDIT 2: Предположим, у вас есть этот выпадающий список:

<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> 

Если установлено "1" к вашему ddlItems.SelectedItem.Value так:

ddlItems.SelectedItem.Value = "Item 1" 

Ваш выпадающий список становится следующим:

<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 –

Смежные вопросы