2013-06-12 10 views
1

Так вот я пытаюсь заполнить мой выпадающий список, код позади, как показано ниже:Как заполнить выпадающий список из базы данных?

protected void Page_Load(object sender, EventArgs e) 
    { 
     SqlConnection con = new SqlConnection(CommonFunctions.GetAppDBConnection(Constants.AppID, Constants.TMDDBConnection)); 
     con.Open(); 
     SqlCommand mycommand = new SqlCommand("select * from MSUnit", con); 
     SqlDataReader ddlvalues = mycommand.ExecuteReader(); 
     ddlTransactionCategory.DataSource = ddlvalues; 
     ddlTransactionCategory.DataTextField = "categoryCode"; 
     ddlTransactionCategory.DataValueField = "OrgID"; 
     ddlTransactionCategory.DataBind(); 


     mycommand.Connection.Close(); 
     mycommand.Connection.Dispose(); 
    } 

проблема, я не могу заставить его работать, любая помощь? и этот код делает это правильно?

+0

ddlvalues ​​является SqlDataReader. Это недействительный DataSource для элемента управления Dropdown. Вы должны получить значения в ddlvalues ​​и поместить их в соответствующий контейнер, например, общий список, и именно это вы назначаете в качестве источника данных. И утилита SqlDataReader после использования. – rikitikitik

+0

что это? моя ошибка тогда, спасибо! :) –

ответ

1

плз попробовать ниже код:

protected void Page_Load(object sender, EventArgs e) 
{ 
    SqlConnection con = new SqlConnection(CommonFunctions.GetAppDBConnection(Constants.AppID, Constants.TMDDBConnection)); 
    con.Open(); 
    SqlCommand mycommand = new SqlCommand("select * from MSUnit", con); 
    SqlDataAdapter adp =new SqlDataAdapter(mycommand); 
    DataSet ds =new DataSet(); 
    adp.Fill(ds); 
    ddlTransactionCategory.DataSource = ds; 
    ddlTransactionCategory.DataTextField = "categoryCode"; 
    ddlTransactionCategory.DataValueField = "OrgID"; 
    ddlTransactionCategory.DataBind(); 


    mycommand.Connection.Close(); 
    mycommand.Connection.Dispose(); 
} 

Спасибо, Hitesh

0

Нельзя привязываться к SqlDataReader (или, по крайней мере, я никогда не пробовал). Получите DataTable или DataSet вместо этого, заполните его, а затем привяжите к раскрывающемуся списку таким же образом.

+1

не видел, что вы написали одно и то же, я собирался привести пример datatable ... –

+0

вы могли бы привести пример, пожалуйста? –

0

Используйте SqlDataAdataper как один ниже

using (SqlConnection con = new SqlConnection(CommonFunctions.GetAppDBConnection(Constants.AppID, Constants.TMDDBConnection))) 
{ 
     con.Open(); 
     SqlDataAdapter da = new SqlDataAdapter("select * from MSUnit", con); 
     DataTable dt = new DataTable 
     da.Fill(dt) 
     ddlTransactionCategory.DataSource = dt; 
     ddlTransactionCategory.DataTextField = "categoryCode"; 
     ddlTransactionCategory.DataValueField = "OrgID"; 
     ddlTransactionCategory.DataBind(); 
} 

, если вы хотите использовать DataReader необходимо вставить один за одним.

while (ddlvalues.Read()) 
{ 
    ddlTransactionCategory.Items.Add(new ListItem(ddlvalues.getString("OrgID"),ddlvalues.getString("categoryCode"))) 
} 
Смежные вопросы