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

时间:2010-11-18 17:00:01

标签: c# asp.net

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

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

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

4 个答案:

答案 0 :(得分:43)

您可以将另一列添加到作为计算列的数据表中,并将其用作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"

答案 1 :(得分:2)

根据您的要求修改您的查询 在Oracle中

SELECT
'<B>'||SHORTNAME||'</B><br/>('||DEPARTMENT||')' AS USERNAME
FROM TABLE

在上面的查询名称将以粗体显示,下面将显示部门 像:

<b>Mr. Jagdeep Mankotia</b><br>
(Web Application Development)

答案 2 :(得分:0)

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

修改您的选择命令并组合您想要显示的2个DataTextField。

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

RadioButtonList1.DataTextField = "Column1And2";

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

答案 3 :(得分:-1)

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

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

    公共部分类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和下拉菜单,大多数情况下只需要两个值。