组合DataTextField中的两个字段。 这可能吗?

我有一个数据集,我绑定到列表框。 但是,我想组合两个字段来组成DataTextField。 这可能,或者我将不得不循环数据行?

lstAddressDropdown.DataSource = dsAddress; lstAddressDropdown.DataTextField = "StreetAddress" + "Place"; lstAddressDropdown.DataBind(); lstAddressDropdown.Items.Insert(0, new ListItem("Please select")); 

值得注意的是,数据集从Web服务返回,因此我无法更改任何存储过程以将列组合在一起。

您可以向作为计算列的数据表添加其他列,并将其用作datatextfield( docs:Multi-field Data Binding )。

因此,对于上面的示例,您可以执行以下操作:

 dsAddress.Tables[0].Columns.Add("StreetAndPlace",typeof(string),"StreetAddress + Place"); lstAddressDropdown.DataSource = dsAddress; lstAddressDropdown.DataTextField = "StreetAndPlace"; lstAddressDropdown.DataBind(); lstAddressDropdown.Items.Insert(0, new ListItem("Please select")); 

要在StreetAddress和Place之间添加空格,请将上面显示的表达式字符串替换为"StreetAddress + ' ' + Place"

根据Oracle中的要求修改查询

 SELECT ''||SHORTNAME||'
('||DEPARTMENT||')' AS USERNAME FROM TABLE

在上面的查询名称将以粗体显示,在下面它将显示如下部分:

 Mr. Jagdeep Mankotia
(Web Application Development)

我知道这已经回答了,但我认为有一种更简单的方法可以解决这个问题。

修改select命令并组合要显示的2 DataTextField。

 DataSource.SelectCommand = "Select (Column1 || ' ' || Column2) As Column1And2 From Table"; RadioButtonList1.DataTextField = "Column1And2"; 

希望这会有所帮助,也许这不是最好的方式,但我认为它更容易理解。

你永远不需要用linq编写循环了。

  • 创建一个类以返回两个字段。

    public partial class EmployeeDropdownInfo {public int person_id {get; 组; public string employee_name {get; 组; }}

  • 获取您的数据并使用linq过滤并返回您需要的内容。

    列表请求者=(来自dc.sp_GetEmployees()中的t选择新的EmployeeDropdownInfo(){person_id = t.person_id,employee_name = t.first_name +“”+ t.last_name})。ToList();

    EmployeeDropdownInfo firstEntry2 = new EmployeeDropdownInfo(){person_id = 0,employee_name =“ – 选择一个员工 – ”}; requestors.Insert(0,firstEntry2); ddlRequestor.DataSource =请求者; ddlRequestor.DataTextField =“employee_name”; ddlRequestor.DataValueField =“person_id”; ddlRequestor.DataBind();

这样您就不必更改proc和下拉列表,大多数时候只需要两个值。