2013-03-08 57 views
7

當我嘗試數據庫dropdownlist,得到這個:system.data.datarowview
我該怎麼做?Databind a dropdownlist

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

你在哪裏綁定的下拉列表?這是在page_load? – 2017-07-13 20:07:45

回答

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

注意,你需要使用字符串周圍單引號,因爲在你的代碼,你沒完成有史以來inital字符串,所以代碼的其餘部分剛剛成爲strQuery的一部分。

另外如果您在將來帶回多個字段,那麼當您綁定下拉列表時,您需要指定數據庫中的哪個字段是值,哪些字段是顯示的文本。

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

您需要告訴它哪些字段用作值和文本。

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

而且你的SELECT語句缺少」應該是:

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

一個例子是:

萊恩指出,如果你拉回來一個字段,那麼你可以只這樣做:

 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(); 

但如果你有更多然後一個領域,那麼你可以這樣做:

 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

你能舉個例子嗎? – 2013-03-08 11:28:10

+0

@Stephen因爲他只是從數據庫中取回一個字段,所以您不需要指定值或文本字段。 – 2013-03-08 11:37:10

+0

Upvote for your updates! – 2013-03-08 13:01:12

0

試試這個..

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

添加ddList.Value="somefield"是可選

0

加入這一行的方式

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

則u錯過

SqlConnection myConn="must add your connection string code here " 
連接字符串

您還沒有打開的連接字符串,以便

添加myconn.open()

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