使下拉列表引用2个sql列

时间:2014-01-14 16:32:08

标签: c# sql asp-classic

有两列,一列有名字,另一列有电子邮件地址。我希望能够在下拉列表中显示名称列中的名称,但在我的asp页面上提交表单时,请在下一列中使用电子邮件。

public void FillAssignedToDropdownOnsite()
{
    SqlConnection con = new   SqlConnection(ConfigurationManager.ConnectionStrings["onsite_db"].ConnectionString);
    string query = "SELECT Name, EmailAddress FROM OnsiteData ";
    SqlCommand cmd = new SqlCommand(query, con);
    SqlDataAdapter adpt = new SqlDataAdapter(cmd);
    DataTable dt = new DataTable();
    cmd.Connection.Open();
    adpt.Fill(dt);
    cmd.Connection.Close();

    lstAssignedTo.DataSource = dt;
    lstAssignedTo.DataTextField = "Name";
    lstAssignedTo.DataBind();
    lstAssignedTo.Items.Insert(0, "Select Onsite Tech");
}

Sql表是OnsiteData 列是名称和电子邮件地址

表格有一个发送电子邮件的下拉列表。

2 个答案:

答案 0 :(得分:1)

您的标签似乎放错了地方。假设这是ASP.NET而不是ASP-Classic,而lstAssignedTo是DropDownList我建议使用DataValueField设置为EmailAddress

lstAssignedTo.DataSource = dt;
lstAssignedTo.DataTextField = "Name";
lstAssignedTo.DataValueField = "EMailAddress";
lstAssignedTo.DataBind();

如果需要,您可以提取所选用户阅读Value属性

的电子邮件地址
if(lstAssignedTo.SelectedValue != null)
{
    string email = lstAssignedTo.SelectedValue.ToString();
    ......
}

答案 1 :(得分:0)

不确定这是你想要的:

lstAssignedTo.DataSource = dt;
lstAssignedTo.DataTextField = "Name";
lstAssignedTo.DataValueField = "EmailAddress"
lstAssignedTo.DataBind();
lstAssignedTo.Items.Insert(0, "Select Onsite Tech");

像这样显示名称,您可以使用

获取相应的电子邮件
var value = lstAssignedTo.SelectedValue;