从asp:DataList中删除table和span标记

NAT*_*TTO 9 c# asp.net datalist datalistitem

DataList使用<table><span>标记呈现,这是我不想要的.

我已经设定RepeatLayout="Flow"但仍然给了我跨度.我已经设定RepeaterDirection="Horizontal"但仍然给我表.

如何在没有所有跨度\表的情况下获得简单的数据列表?

<asp:DataList ID="MyDataList" runat="server" RepeatLayout="Flow" RepeatDirection="Horizontal">
   <ItemTemplate>
     ....
   </ItemTemplate>
</asp:Datalist>
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Dav*_*vid 12

你需要它作为一个DataList控制吗?您可以通过使用Repeater甚至只是循环遍历对象并手动渲染输出来完全控制渲染的HTML .


小智 6

有时你不能使用Repeater,因为DataList提供了额外的可能性(比如通过UPDATE和DELETE命令更新数据库,直接使用asp:DataSource).

因此,如果你仍然需要使用DataList但是想要避免它的html,你可以像我一样在它上面做一些jQuery.

aspx代码:

<ul class="list">
    <asp:DataList ID="Repeater1" runat="server" DataSourceID="SqlDataSource1" DataKeyField="photo_id" RepeatLayout="Flow" RepeatDirection="Horizontal">
        <ItemTemplate>
            <li class="item" id='<%# Eval("photo_id") %>'>
                Whatever else you need here.
            </li>
            </ItemTemplate>
        </asp:DataList>
    </ul>
Run Code Online (Sandbox Code Playgroud)

这将产生这样的HTML:

<span id="SomeId" style="">
   <span>
      <li class="item ui-droppable" id="31349">
        Whatever else you need here.
     </li>
   </span>
</span>
Run Code Online (Sandbox Code Playgroud)

显然,您不需要2个span标签.要删除它们,可以在页面上添加jQuery脚本.

<script type="text/javascript">
$(document).ready(function () {
    $('.item').unwrap(); $('.item').unwrap();
});
</script>
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我想生成我控制的无序列表.但是作为obvius,您可以通过更改DataList中的HTML并以jQuery(.item)中的正确项目为目标,以任何其他方式执行此操作.

希望这可以帮助其他需要DataList功能但不能使用Repeater的人.