下拉列表中的System.Data.DataRowView
本文关键字:Data DataRowView System 下拉列表 | 更新日期: 2023-09-27 18:05:06
我正在尝试使用列中的值填充下拉列表。现在的问题是:我没有在下拉菜单中获得实际值(国家代码,如印度(+61))。相反,我得到的是"System.Data"。(多次)在下拉菜单。
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
上调用bind方法。CountryCode
的数据类型为varchar(50)
&值如India(+91)
、Australia(+61)
等
您应该设置下拉框的DataValueField
和DataTextField
属性。
ddlMobile.DataSource = ds1.Tables["AUser"];
ddlMobile.DataValueField = "CountryCode";
ddlMobile.DataTextField = "CountryName";
ddlMobile.DataBind();
这里的CountryCode和CountryName必须是与DataRow
您看到的是DataRowView.ToString()的默认实现。要从DataRow中选择要显示的特定字段,请执行以下操作:
ddlMobile.DataSource = ds1.Tables["AllUser"];
ddlMobile.DataTextField = "CountryCode"; // This is text displayed
ddlMobile.DataValueField = "CountryCode"; // This is the value returned
ddlMobile.DataBind();
您没有在DropDownList
中设置DataTextField
。建议也设置DataValueField
在你的aspx中添加DataTextField
属性:
<asp:DropDownList ID="ddlMobile" runat="server"
DataTextField="CountryCode"
DataValueField="CountryCode" />
您也可以在后面的代码中设置它,如其他答案所示。
否则,您所看到的行为是因为数据绑定调用ToString()
来显示信息,因为您没有提供查找哪个数据字段