3

我正在尝试使用列中的值填充下拉列表。现在的问题是:我没有在下拉列表中获得实际值(国家代码,如印度(+61))。相反,我在下拉列表中得到“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_loadCountryCodeis varchar(50)& 值的数据类型类似于India(+91)Australia(+61)等等...

4

3 回答 3

11

您应该设置下拉菜单的DataValueField和属性。DataTextField

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

这里 CountryCode 和 CountryName 必须是与 DataRow 中的那些值对应的列名

于 2013-03-20T11:33:02.723 回答
2

您将看到 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();
于 2013-03-20T11:34:02.087 回答
1

你没有DataTextFieldDropDownList. 建议还设置DataValueField 在您的 aspx 中添加DataTextField属性:

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

您也可以在后面的代码中设置它,就像其他答案所示。

否则,您看到的行为是因为 DataBound 正在调用ToString()来显示信息,因为您没有提供要查找的数据字段。

于 2013-03-20T11:35:51.333 回答