2013-03-08 43 views
7

Khi tôi cố gắng databing dropdownlist, hãy nhận điều này: system.data.datarowview
tôi làm gì sai?Đặt một danh sách thả xuống

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

đâu bạn ràng buộc danh sách thả xuống của bạn? Đây có phải là page_load không? –

Trả lời

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

Lưu ý bạn cần phải sử dụng trích dẫn đơn xung quanh chuỗi, như trong mã của bạn, bạn đã không hoàn thành chuỗi inital bao giờ hết, vì vậy phần còn lại của các mã chỉ trở thành một phần của strQuery.

Ngoài ra nếu bạn mang lại nhiều trường trong tương lai, khi bạn liên kết danh sách thả xuống, bạn cần xác định trường nào từ cơ sở dữ liệu là giá trị và văn bản được hiển thị.

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

Bạn cần phải cho biết trường nào sẽ sử dụng làm giá trị và văn bản.

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

Và chọn tuyên bố của bạn đang thiếu một" Nó nên là:.

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

Một thí dụ là:

Như ryan chỉ ra nếu bạn đang kéo lại một lĩnh vực thì bạn có thể chỉ làm:

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

Nhưng nếu bạn có thêm một trường thì bạn có thể thực hiện việc này:

 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

Bạn có thể cho tôi một ví dụ không? –

+0

@Stephen vì anh ta chỉ mang lại một trường từ cơ sở dữ liệu mà bạn không cần phải chỉ định giá trị hoặc trường văn bản. –

+0

Upvote cho bản cập nhật của bạn! –

0

Hãy thử điều này ..

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

thêm ddList.Value="somefield" là không bắt buộc

0

thêm dòng cách này

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

sau đó u bỏ lỡ chuỗi kết nối cho

SqlConnection myConn="must add your connection string code here " 

Bạn có không mở chuỗi kết nối để

thêm myconn.open()

cho

SqlConnection myConn="must add your connection string code here " 
`myconn.open()` 
SqlDataAdapter sqlDa = new SqlDataAdapter(strQuery,myConn) 
Các vấn đề liên quan