【问题标题】:Fill <ul> with database values用数据库值填充 <ul>
【发布时间】:2011-12-11 09:37:35
【问题描述】:

如何使用 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>

有没有更好的方法来做到这一点?

【问题讨论】:

    标签: asp.net html webforms


    【解决方案1】:

    您可以使用 for 循环来迭代数据源中的所有值。 一个样本:

    <ul>
      <% foreach(var item in Collection) { %>
         <li><%=item.Property%></li>
      <% } %>
    </ul>
    

    您还可以使用 ASP.NET 提供的其他数据控件,例如 DataGrid。

    而且,如果你坚持使用Repeater,我建议你将&lt;ul&gt;放入HeaderTemplate&lt;/ul&gt;放入FooterTemplate,这样可以防止空&lt;ul&gt;&lt;/ul&gt;

    【讨论】:

    • 然后使用myul.InnerHtml 对吗?所以使用for 循环迭代DataTable 和InnerHtml 属性比Repeater 更快(或更好)?我不喜欢DataGrids,因为&lt;table&gt; 标记。
    • 请查看我对循环方法的更新。使用内联循环的灵活性,比中继器稍快。
    【解决方案2】:

    在你后面的代码中,你需要为你的转发器设置数据源。

    类似:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-16
      • 2011-05-27
      • 1970-01-01
      • 1970-01-01
      • 2020-08-13
      • 1970-01-01
      • 2017-03-18
      • 1970-01-01
      相关资源
      最近更新 更多