为下拉列表项分配不同的值和文本

时间:2014-12-10 07:27:16

标签: c# asp.net database drop-down-menu code-behind

我正在尝试使用batabase中的数据填充pageload上的下拉列表。

填充时我希望下拉项(<option>)的显示文字与value

的“<option>”不同

例如:下拉列表将在UI上显示“标题”(来自db的列)作为文本,但value的“<option>”应为“ID”(来自db的列)

我如何实现这一目标?

目前我的代码是这样的:(drpReleaseTitle是下拉列表的ID)

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        SqlConnection con1 = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
        con1.Open();

        SqlCommand releaseTitlecmd = new SqlCommand("select Title from LWMDemo_ReleaseInfo order by ReleaseID", con1);
        SqlDataReader releaseTitledr = releaseTitlecmd.ExecuteReader();
        while (releaseTitledr.Read())
        {
            drpReleaseTitle.Items.Add(releaseTitledr.GetValue(0).ToString());
        }
        con1.Close();
    }
}

3 个答案:

答案 0 :(得分:0)

试试这个

drpReleaseTitle.Items.Add(new ListItem("yourtext", "yourvalue"));

答案 1 :(得分:0)

最好使用数据集而不是数据读取器,因为它使用断开连接的体系结构,因此您可以在关闭连接后使用

 protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        SqlConnection con1 = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
        con1.Open();

        SqlCommand releaseTitlecmd = new SqlCommand("select Title from LWMDemo_ReleaseInfo order by ReleaseID", con1);
       SqlDataAdapter sda = new SqlDataAdapter();
        sda.SelectCommand = Cmd;
        sda.Fill(ds);
        if(ds!=null && ds.table.count>0){
        if(ds.table[0]!=null && ds.table[0].rows.count>0){
            drpReleaseTitle.DataSource=ds.table[0].Title;  //Title Column
             drpReleaseTitle.DataSourceID=ds.table[0].ID;  //ID Column
        }
    }
        con1.Close();
    }
}

答案 2 :(得分:0)

如果您尝试在下拉列表中的项目中添加字符串,它将创建一个项目,该项目将包含文本和值作为您的字符串。您需要添加新的ListItem。 ListItem包含带有text和value作为参数的构造函数。有关此课程的更多信息,请阅读here