2013-03-20 42 views
3

我試圖使用列中的值填充下拉列表。現在的問題是:我沒有在下拉菜單中獲得實際值(國家代碼,如印度(+61))。相反,我在下拉菜單中獲得了「System.Data.DataRowView」(多次)。DropDownList中的System.Data.DataRowView

public void bind() 
{ 
    DataSet ds1 = new DataSet(); 
    SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]); 
    con.Open(); 
    string strQuery = "select CountryCode from AUser"; 
    SqlCommand cmd = new SqlCommand(strQuery, con); 
    using (SqlDataAdapter da = new SqlDataAdapter(cmd)) 
     da.Fill(ds1, "AUser"); 
    ddlMobile.DataSource = ds1.Tables["AUser"]; 
    ddlMobile.DataBind(); 
    con.Close(); 
} 

我打電話給page_load上的綁定方法。爲CountryCode數據類型爲varchar(50) &值也像India(+91)Australia(+61)等等

+0

什麼是您的問題? – 2013-03-20 11:19:42

+0

你能詳細解釋一下你的問題究竟是什麼。 – 2013-03-20 11:20:34

+0

我沒有在下拉列表中獲得實際值(國家代碼,如印度(+61))。相反,我在下拉菜單中獲得了「System.Data.DataRowView」(多次)。 – adityawho 2013-03-20 11:21:45

回答

9

應設置下降的DataValueFieldDataTextField性能下降。

ddlMobile.DataSource = ds1.Tables["AUser"]; 
ddlMobile.DataValueField = "CountryCode"; 
ddlMobile.DataTextField = "CountryName"; 
ddlMobile.DataBind(); 

這裏COUNTRYCODE和國家或地區名稱必須

2

您所看到的DataRowView.ToString的默認實現()確實是對應於那些值的列名在你的DataRow。要從DataRow中選擇要顯示的特定字段,請執行此類操作。

ddlMobile.DataSource = ds1.Tables["AllUser"]; 
ddlMobile.DataTextField = "CountryCode"; // This is text displayed 
ddlMobile.DataValueField = "CountryCode"; // This is the value returned 
ddlMobile.DataBind(); 
1

您沒有設置在DropDownListDataTextField。我們建議設置也DataValueField 在你的aspx添加DataTextField屬性:

<asp:DropDownList ID="ddlMobile" runat="server" 
        DataTextField="CountryCode" 
        DataValueField="CountryCode" /> 

您還可以將其設置在後面的代碼,像其他的答案顯示。

否則,您所看到的行爲是因爲DataBound正在調用ToString()來顯示信息,因爲您沒有提供所需的數據字段。