我有一个 RadComboBox 用于显示部门名称和缩写。我正在使用带有 LinqDataSource 的项目模板来使每个项目显示为:
DeptAbbr -(部门名称)
这是我用来执行此操作的代码,它工作正常:
<telerik:RadComboBox ID="rcbDepartments" runat="server" AppendDataBoundItems="True"
OnInit="rcbDepartments_Init" DataTextField="DepartmentAbbr" AutoPostBack="True"
DataSourceID="ldsDepartments" DataValueField="DepartmentID" HighlightTemplatedItems="true"
NoWrap="true" Width="250px">
<ItemTemplate>
<div>
<b>
<%# Eval("DepartmentAbbr")%></b><%# Eval("DepartmentName", " - ({0})") %>
</div>
</ItemTemplate>
</telerik:RadComboBox>
我的问题是这个。我想在“所有部门”的列表中添加一个初始项目,并且是默认项目。我可以轻松做到这一点,但我遇到的问题是,因为我没有在数据库中存储“所有部门”条目,所以当您下拉组合框时,模板会在项目列表的开头显示一个空格. 我试图找出是否有任何方法可以对列表中除第一项以外的所有内容进行模板化?
注意:我也尝试过像这样在 Eval 中做一个条件:
<b><%# (Eval("DepartmentAbbr") != null) ? Eval("DepartmentAbbr") : "All Departments" %></b><%# Eval("DepartmentName", " - ({0})") %>
但它只评估数据绑定的项目,而不是我手动插入的初始项目。换句话说,如果我将上述语句更改为:
<b><%# (Eval("DepartmentAbbr") == null) ? Eval("DepartmentAbbr") : "All Departments" %></b><%# Eval("DepartmentName", " - ({0})") %>
然后我只得到一个列表,顶部有一个空白项目,其余的为“所有部门”。
我解决这个问题的方法是在 LINQ 服务器端做一些时髦的选择,但这迫使我摆脱所有的模板和 html 格式。