У меня есть 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.