将两列绑定到下拉列表中

时间:2012-11-26 11:45:04

标签: c# asp.net

我想将数据库中的两列绑定到下拉列表中。这是我的代码:

SqlConnection con=new SqlConnection(CommonRefference.Constr());
string query = "Select Id,Name+' ('+Distribution_name+') 'as Name1 from BR_supervisor  ";

SqlCommand cmd = new SqlCommand(query,con);
con.Open();

SqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())
{
        DropDownList3.DataSource = query;
        DropDownList3.DataTextField = "name1";
        DropDownList3.DataValueField = "Id";
        DropDownList3.DataBind();
}
con.Close();

但它会出现以下错误

  

DataBinding:'System.Char'不包含名称为'name1'的属性

怎么做?任何帮助我的人都非常感激

2 个答案:

答案 0 :(得分:3)

Name1 不是 name1

将此更改为

DropDownList3.DataTextField = "Name1";

修改

您正在将字符串(查询)绑定到此处的数据源

DropDownList3.DataSource = query;

和string没有名为'name1'的属性,所以错误

解决方案:

请参阅此我已将此更改为您的要求

private void LoadDropDownList()
        {
            SqlConnection con=new SqlConnection(CommonRefference.Constr());
            string query = "Select Id,Name+' ('+Distribution_name+') 'as Name1 from BR_supervisor  ";

            SqlCommand cmd = new SqlCommand(query,con);
            con.Open();
            SqlDataReader reader = cmd.ExecuteReader();

            DropDownList3.DataSource = reader ;

            DropDownList3.DataValueField = "Id";
            DropDownList3.DataTextField = "Name1";

            DropDownList3.DataBind();

            DropDownList3.Items.Insert(0, new ListItem("Select One", "0")); // Adds items to the DDL
            DropDownList3.Items.Insert(1, new ListItem("All Categories", "-1"));

            con.Close();
        }

有关详细说明,请参阅此链接Populate-ASP.NET-dropdownlist

答案 1 :(得分:0)

问题在于:

DropDownList3.DataSource = query;

您将字符串值设置为源,因此它会尝试将char值作为下拉列表的项目。

所以,基本上你需要的是创建某种数据源(List可能是一个很好的数据源),然后通过你的读者填写它,然后你可以做如下的事情:

DropDownList3.DataSource = source;