2010-04-15 24 views
0

「System.Data.DataRowView」這是我的代碼:數據綁定給出的,而不是實際值

 string SQL = "SELECT email FROM members WHERE subscribe=true"; 
     string myConnString = Application["ConnectionString"].ToString(); 

     OleDbConnection myConnection = new OleDbConnection(myConnString); 
     OleDbCommand myCommand = new OleDbCommand(SQL, myConnection); 
     myConnection.Open(); 
     OleDbDataAdapter MyAdapter = new OleDbDataAdapter(myCommand); 
     DataSet ds = new DataSet(); 
     MyAdapter.Fill(ds); 

     MailsListBox.DataSource = ds; 
     MailsListBox.DataBind(); 

     GridView1.DataSource = ds; 
     GridView1.DataBind(); 

     myConnection.Close(); 

所以它看起來: alt text http://i40.tinypic.com/8vsrd1.jpg

正如你看到的,GridView控件顯示數據集就好了,並且ListBox失敗。 發生了什麼?我該如何解決它?

回答

3

如果您不告訴控件您要使用哪些特定屬性進行顯示,它只會在其綁定的項目上調用ToString(),並將其用於顯示。對於大多數對象,默認情況下,ToString()只返回類型名稱。

嘗試設置MailsListBox.DataTextFieldMailsListBox.DataValueField"email"

2

當你做MailsListBox.DataSource = ds;你實際上沒有設置數據集爲數據源,而是默認的DataView。網格知道如何處理它。

在這兩種情況下,Grid和Listbox都應該設置DataMember。使用類似於:

MyAdapter.Fill(ds, "Foo"); 

MailsListBox.DataSource = ds; 
MailSlistBox.DataMember = "Foo"; 
MailsListBox.DisplayMember = "email"; 
MailsListBox.DataBind(); 
+0

謝謝!我現在明白了。 – iTayb 2010-04-15 22:20:42

相關問題