Заполнить значениями базы данных

#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, быстрее (или лучше), чем a Repeater ? Мне не нравится DataGrids , потому <table> что разметка.

2. пожалуйста, ознакомьтесь с моим обновлением для метода цикла. использование встроенного цикла для его гибкости, немного быстрее, чем Repeater.

Ответ №2:

В вашем коде вам нужно установить источник данных для вашего ретранслятора.

Что-то вроде:

 deptList.DataSource = <your query result here>;
deptList.DataBind();