2014-12-29 5 views
0

У меня есть страница ASPX, на которой есть выпадающее меню.Заполнить раскрывающийся список из базы данных SQL Server

<div> 
    <p>Pick a customer to show their order(s)</p> 
    <asp:DropDownList ID="customerSelect" AutoPostBack="true" runat="server" OnSelectedIndexChanged="customerSelect_SelectedIndexChanged"></asp:DropDownList> 
</div> 

Я хочу, чтобы параметры в раскрывающемся списке были заполнены из базы данных с именами клиентов.

Вот что моя база данных выглядит

database

Вот мой код за

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     populateDropDown(); 
     customerSelect_SelectedIndexChanged(null, null); 
    } 
} 

public void populateDropDown() 
{ 
    SqlCommand cmd = new SqlCommand("SELECT * FROM [Orders]", new SqlConnection(ConfigurationManager.AppSettings["ConnString"])); 
    cmd.Connection.Open(); 

    SqlDataReader ddlValues; 
    ddlValues = cmd.ExecuteReader(); 

    customerSelect.DataSource = ddlValues; 
    customerSelect.DataValueField = "OrderID"; 
    customerSelect.DataTextField = "CustomerName"; 

    cmd.Connection.Close(); 
    cmd.Connection.Dispose(); 

} 

Я использовал этот код раньше. Поэтому я должен пропустить что-то простое, но я не уверен, что это такое.

EDIT У меня нет ошибок. Код компилируется. Но выпадающий список остается пустым.

+0

В каком виде это не работает? Когда вы отлаживаете это, где/как это происходит? – David

+0

Прошу прощения. Должен был это предусмотреть. Он не заполняет выпадающий список. У меня нет ошибок. – onTheInternet

+0

«IsPostBack» и «SqlConnection» в том же кодовом блоке болят мои глаза. – granadaCoder

ответ

4

Ну, я думаю, вы забываете связать свой выпадающий список;

customerSelect.DataBind(); 

И использовать using statement распоряжаться вашим SqlCommand, SqlConnection и SqlDataReader вместо вызова метода .Dispose() вручную.

using(SqlConnection con = new SqlConnection(connString)) 
using(SqlCommand cmd = con.CreateCommand()) 
{ 
    ... 
    ... 
    using(SqlDataReader ddlValues = cmd.ExecuteReader()) 
    { 
     ... 
    } 
} 
+0

YEP! Абсолютно верно. Спасибо! Я отвечу через 9 минут. – onTheInternet

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