2013-03-08 25 views
7

dropdownlist veritabanını denediğimde, şunu aldım: system.data.datarowview
Neyi yanlış yapıyorum? Hiç açmasının dize bitiremedi sizin kodda olduğu gibiBir dropdown listesi döndürme

string strQuery = "Select Item FROM Calendar Where UserD="Test"; 
SqlConnection myConn; 
SqlDataAdapter sqlDa = new SqlDataAdapter(strQuery,myConn); 
DataTable sqlTa = new DataTable("Test"); 
da.Fill(sqlTa); 
ddlList.DataSource = sqlTa; 
ddlList.DataBind(); 
+0

için myconn.open()

eklemek böylece

açılamıyor bağlantı dizesi var? Bu page_load içinde mi? –

cevap

14
string strQuery = "Select Item FROM Calendar Where UserD='Test'"; 

Not Eğer dize etrafında tek alıntılar kullanmak gerekir, bu nedenle kodun kalanı sadece strQuery parçası haline geldi.

Ayrıca ileride birden fazla alan getiriyorsanız, bir açılan listeyi bağladığınızda veritabanından hangi alanın değeri ve görüntülenen metin olduğunu belirtmeniz gerekir.

ddlList.DataSource = sqlTa; 
ddlList.DataValueField = "ValueFieldFromDatabaseResults"; 
ddlList.DataTextField = "ShownTextFieldFromDatabaseResults"; 
ddlList.DataBind(); 
2

Değer ve metin olarak hangi alanların kullanılacağını belirtmeniz gerekir.

ddlList.DataSource = sqlTa; 
ddlList.DataValueField = "ValueField"; 
ddlList.DataTextField = "TextField"; 
ddlList.DataBind(); 

Ve O olmalı senin seçme deyimi eksik olduğunu, bir":.

"Select Item FROM Calendar Where UserD='Test'" 

Bir Örnek olmak: geri bir alan çekiyorsanız Ryan belirttiği gibi

o zaman sadece can

 DataTable dtTable = new DataTable(); 

     try 
     { 
      using (SqlConnection sqlConnection = new SqlConnection("Your connection")) 
      { 
       using (SqlCommand sqlCommand = new SqlCommand("Select Item FROM Calendar Where UserD='Test'", sqlConnection)) 
       { 
        sqlConnection.Open(); 

        using (SqlDataReader sqlDataReader = sqlCommand.ExecuteReader()) 
        { 
         dtTable.Load(sqlDataReader); 
         sqlDataReader.Close(); 
        } 
       } 
      } 
     } 
     catch (Exception error) 
     { 
      throw error; 
     } 

     ddlList.DataSource = dtTable; 
     ddlList.DataBind(); 

Ama daha sonra bir alanınız varsa o zaman bunu yapabilirsiniz: do

 DataTable dtTable = new DataTable(); 

     try 
     { 
      using (SqlConnection sqlConnection = new SqlConnection("Your connection")) 
      { 
       using (SqlCommand sqlCommand = new SqlCommand("Select Item, id FROM Calendar Where UserD='Test'", sqlConnection)) 
       { 
        sqlConnection.Open(); 

        using (SqlDataReader sqlDataReader = sqlCommand.ExecuteReader()) 
        { 
         dtTable.Load(sqlDataReader); 
         sqlDataReader.Close(); 
        } 
       } 
      } 
     } 
     catch (Exception error) 
     { 
      throw error; 
     } 

     ddlList.DataSource = dtTable; 
     ddlList.DataValueField = "id"; 
     ddlList.DataTextField = "item"; 
     ddlList.DataBind(); 
+0

Bana bir örnek verebilir misiniz? –

+0

@Stephen sadece veritabanından bir alan geri getirdiğinden, değeri veya metin alanını belirtmeniz gerekmez. –

+0

Güncellemeleriniz için destek! –

0

bu deneyin ..

ddlList.DataSource = sqlTa;     
ddlList.DataTextField = "class"; 
ddlList.DataBind(); 

ddList.Value="somefield" ekleyerek

0

ddlList.DataSource = sqlTa; 
ddlList.DataValueField = "ValueFieldFromDatabaseResults"; 
ddlList.DataTextField = "ShownTextFieldFromDatabaseResults"; 
ddlList.DataBind(); 

sonra u

SqlConnection myConn="must add your connection string code here " 
için bağlantı dizesini özledim bu hat yolu eklemek isteğe bağlıdır

Size açılır listeyi bağlayıcı yerlerde

SqlConnection myConn="must add your connection string code here " 
`myconn.open()` 
SqlDataAdapter sqlDa = new SqlDataAdapter(strQuery,myConn)