2013-03-21 2 views
1

на моем веб-сайте ASP У меня есть два раскрывающихся списка, первый из которых состоит из четырех вариантов, которые пользователь выбирает, и на основе этого второго раскрывающегося списка будет заполняться из данных столбца выбранной базы данных. Я пытаюсь заполнить эти списки программным способом, а не связывая их через источник данныхНабирая раскрывающийся список на основе предыдущего списка выпадающего списка

код в настоящее время я есть два вопроса:

1. В моей «onselectedIndex изменилось» метод, который я не могу вызвать мое событие, если я хотите щелкнуть по первому элементу в раскрывающемся списке, мне нужно щелкнуть другой элемент, а затем снова нажать на первый, чтобы он тоже включался. У меня есть AutoPostBack набор для истинного

2. Когда событие действительно вызывают данные базы данных не заселять второй DropDownList, это правильно заселение с правильным количеством строк для набора данных, но не отображаются данные.

После того, как первый элемент выбирается из первого списка, т.е. «кофе Name», то второй список заселяет с правильными номерами строк, то есть 3, но не с правильными данными

Текущий код:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     string option = DropDownList1.SelectedValue; 
     // If the selected element is 'Coffee Name' run the method. 
     if (option == "Coffee Name") 
     { 
      bindCoffeeNames(); 
     } 
    } 



    private void bindCoffeeNames() 
    { 
     Query the DB and bind the data to the second dropdown list. 
     SqlConnection sqlcon = new SqlConnection(connstring); 
     SqlCommand sqlcmd = new SqlCommand("select coffeeName from Coffees ORDER BY coffeeName ASC", sqlcon); 
     SqlDataAdapter adp = new SqlDataAdapter(sqlcmd); 
     DataSet ds = new DataSet(); 
     adp.Fill(ds); 
     DropDownList2.DataSource = ds.Tables[0]; 
     DropDownList2.DataBind(); 

    } 

ответ

0
  1. Autopostback будет стрелять только при изменении. Вы хотите вставить заполнитель по умолчанию в раскрывающийся список
    . Вы можете сделать это в коде, как это:

    dropdownlist1.Items.Insert(0, new ListItem("Select an item", String.Empty)); 
    dropdownlist1.SelectedIndex = 0; 
    

    Или в разметке:

    <asp:DropDownList ID="ddlPersons" runat="server" AppendDataBoundItems="true" DataValueField="ID" DataTextField="Name"> 
    <asp:ListItem> -- please select person -- </asp:ListItem> 
    </asp:DropDownList> 
    
  2. Добавить эту строку bindCoffeeNames:

    DropDownList2.DataTextField = "coffeeName";

Кроме того, это хорошая идея, чтобы указать DataValueField (вам нужно будет сменить запрос, чтобы вернуть CoffeeId, но это не обязательно)

+0

большое спасибо, я обработал заполнитель «пустой» элемент по умолчанию. Но поле данных отлично работало. Еще раз спасибо. Я помету ваш ответ правильно, когда смогу – user1352057

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