在select语句中拆分组合列

时间:2018-03-22 07:17:25

标签: c# sql asp.net sql-server select

我正在使用一个select语句,它将两个列EmployerID和Name组合在一起:

SELECT EmployerID + '-' + Name AS CompanyName FROM Employer

将被放入数据库的下拉列表中。 我没有选择和填充数据库的问题,但是,我需要使用EmployerID作为Employee实体的外键,通过使用

选择属于所述雇主的相应员工。
string x =ddlEmployer.SelectedValue.ToString();
SqlCommand EmployeeCmd = new SqlCommand("SELECT EmployeeNo + ' - ' + Name As EmployeeName From Employee Where EmployerID = @SelectEmployer", conn);
EmployeeCmd.Parameters.AddWithValue("@SelectEmployer", x);

我无法选择它,因为使用CompanyName组合值执行所选值的select语句不会返回任何内容,只要它等于或如上所示。

所以我的问题是,在选择这两个并在下拉列表中将它们显示为单个选项之后,我如何使用所选值来搜索应该存在的EmployerID?

2 个答案:

答案 0 :(得分:2)

首先,更改初始查询以包含EmployerID。

SELECT EmployerID + '-' + Name AS CompanyName, EmployerID FROM Employer

然后将正确的列绑定到DropDownList。您可以有两个不同的列,一个用于TextField,另一个用于ValueField。

DropDownList1.DataSource = source;
DropDownList1.DataTextField = "CompanyName";
DropDownList1.DataValueField = "EmployerID";
DropDownList1.DataBind();

现在,您始终将EmployerID作为SelectedValue。

EmployeeCmd.Parameters.AddWithValue("@SelectEmployer", DropDownList1.SelectedValue);

答案 1 :(得分:0)

我已经设法通过hendryanw的评论来解决这个问题,只需使用

string x = ddlEmployer.SelectedValue.ToString().Split('-)[0]; 

有助于拆分它并选择我想要的索引,这两种方式都有效。