2013-01-17 106 views
0

我收到提示:數據綁定錯誤:下拉列表和數據庫

DataBinding: 'System.Data.DataRowView' does not contain a property with the name 'system_name'.

我一個下拉列表,從系統表獲取數據。代碼:

string queryStringForSystem = "SELECT system_name FROM ptdd.systems where system_id=(select system_id from ptdd.parameters where parameter_id='" + txtParameterId.Text + "')"; 
string odbccon = "Driver={IBM DB2 ODBC DRIVER};database=dd_unify;hostname=x.x.x.x;protocol=TCPIP;port=50000;uid=xxxx;pwd=xxxx";    
using (System.Data.Odbc.OdbcConnection odbcConnection = new System.Data.Odbc.OdbcConnection(odbccon)) 
       { 
        System.Data.Odbc.OdbcDataAdapter adapter = new System.Data.Odbc.OdbcDataAdapter(queryStringForSrdRefId, odbccon); 
        System.Data.DataSet dataSet = new System.Data.DataSet(); 
        try 
        { 
         odbcConnection.Open(); 
         adapter.Fill(dataSet); 
         ddrSystem.DataSource = dataSet.Tables[0]; 
         ddrSystem.DataTextField = "system_name"; 
         ddrSystem.DataValueField = "system_id"; 
         ddrSystem.DataBind(); 

        } 

       catch (Exception e1) 
       { 
        Console.WriteLine(e1.Message); 
       } 

而且,我說過的datatextfield和datavalue領域。

<asp:DropDownList ID="ddrSystem" runat="server" DataTextField="system_name" DataValueField="system_id"> 
       </asp:DropDownList> 

雖然,它是一個小問題。無法解決它。

+1

在'databind'它可能會拋出異常,因爲你不是在選擇列表中選擇'system_id',因此你的'ddrSystem.DataValueField'將是無效的。 –

+0

這意味着您嘗試與下拉列表綁定的數據集沒有名稱爲「system_name」的任何列。您需要確保該字段存在於您用來與下拉列表綁定的查詢結果中(根據您的條件)。 – Srinivas

+0

@QuintonBernhardt當我選擇system_name作爲ValueField時,它拋出了相同的異常 –

回答

0

嘗試從

SELECT system_name FROM...

更改查詢到

SELECT system_id, system_name FROM...

原因:你的代碼是尋找SYSTEM_ID但那場不在查詢。

ddrSystem.DataTextField = "system_name";

ddrSystem.DataValueField = "system_id";