我有一个数据集,我绑定到列表框。但是,我想组合两个字段来组成DataTextField。这可能,或者我将不得不循环数据行?
lstAddressDropdown.DataSource = dsAddress;
lstAddressDropdown.DataTextField = "StreetAddress" + "Place";
lstAddressDropdown.DataBind();
lstAddressDropdown.Items.Insert(0, new ListItem("Please select"));
值得注意的是,数据集从Web服务返回,因此我无法更改任何存储过程以将列组合在一起。
答案 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和下拉菜单,大多数情况下只需要两个值。