2013-03-20 67 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()来显示信息,因为您没有提供所需的数据字段。