#asp.net #html #webforms
#asp.net #HTML #веб-формы
Вопрос:
как я могу заполнить неупорядоченный список значениями из SQL Server 2008 R2 SP1? xD У меня есть это, используя asp:repeater:
<ul style="list-style:none">
<asp:Repeater ID="deptList" runat="server">
<ItemTemplate>
<li>
<asp:HyperLink runat="server"
Text='<%# Eval("Name") %>'
NavigateUrl='<%# Link.ToDepartment(Eval("DepartmentID").ToString()) %>'
/>
</li>
</ItemTemplate>
</asp:Repeater>
</ul>
и выходной HTML:
<ul style="list-style:none">
<li>
<a href="http://...">value1</a>
</li>
<li>
<a href="http://...">value2</a>
</li>
<li>
<a href="http://...">value3</a>
</li>
</ul>
Есть ли лучший способ сделать это?
Ответ №1:
Вы можете использовать цикл for для перебора всех значений из источника данных. Образец:
<ul>
<% foreach(var item in Collection) { %>
<li><%=item.Property%></li>
<% } %>
</ul>
А также вы можете использовать другие элементы управления данными, предоставляемые ASP.NET , такие как DataGrid.
И, если вы настаиваете на использовании Repeater, я предлагаю вам вставить <ul>
in HeaderTemplate
, </ul>
into FooterTemplate
, это предотвращает пустое <ul></ul>
.
Комментарии:
1. А затем используйте
myul.InnerHtml
правильно? Итак, использованиеfor
цикла, повторяющего DataTable и свойство innerHTML, быстрее (или лучше), чем aRepeater
? Мне не нравитсяDataGrids
, потому<table>
что разметка.2. пожалуйста, ознакомьтесь с моим обновлением для метода цикла. использование встроенного цикла для его гибкости, немного быстрее, чем Repeater.
Ответ №2:
В вашем коде вам нужно установить источник данных для вашего ретранслятора.
Что-то вроде:
deptList.DataSource = <your query result here>;
deptList.DataBind();