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

时间:2010-12-04 16:36:06

标签: c# asp.net datalist datalistitem

使用<table><span>标记呈现DataList,我不想这样做。

我已设置RepeatLayout="Flow",但仍然给了我跨度。 我已经设置了RepeaterDirection="Horizontal",但仍然给了我表格。

如何在没有所有spans \ table的情况下获得一个简单的数据表?

<asp:DataList ID="MyDataList" runat="server" RepeatLayout="Flow" RepeatDirection="Horizontal">
   <ItemTemplate>
     ....
   </ItemTemplate>
</asp:Datalist>

提前致谢!

5 个答案:

答案 0 :(得分:12)

你需要它是DataList控件吗?您可以使用Repeater完全控制渲染的HTML,甚至只需循环浏览对象并手动渲染输出。

答案 1 :(得分:6)

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

因此,如果你仍然需要使用DataList但是想要避免使用它,那么就像我一样,你可以在它上面做一些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>

这将生成如下HTML:

<span id="SomeId" style="">
   <span>
      <li class="item ui-droppable" id="31349">
        Whatever else you need here.
     </li>
   </span>
</span>

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

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

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

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

答案 2 :(得分:3)

我认为您可能会发现使用repeater更容易,您可以设置自己的标记。

最重要的是,创建一个asp转发器,以与数据列表大致相同的方式将数据绑定到它,并在“itemtemplate”标记中构建标记。 (警告这是来自内存 - 我在我的流动笔记本电脑上,所以没有Visual Studio来检查语法。)

<asp:Repeater runat="server" id="MyRepeater">
    <HeaderTemplate><h1>My Data Title</h1></HeaderTemplate>
    <ItemTemplate>
        <p>Any Markup you want. This bit gets repeated</p>
        <%#Container.DataItem("DataKeyOrColumnName")%>
    </ItemTemplate>
    <FooterTemplate><p>The footter (and header) only appear once.</p><p>you could use them to start and end a list or table</p></FooterTemplate>
</asp:Repeater>

您只会获得放在模板中的标记,而不是其他内容。如果您不需要,可以跳过页眉和页脚。如果您根本不需要标记,只需在模板中没有标记,数据将以纯文本形式显示。

答案 3 :(得分:0)

我收到此错误是因为我在页眉中使用了<Table>而在页脚模板中使用了</table>,我将其删除了,并且我在每个模板上使用了整个表格,并且它停止了获取不需要的内容标签

答案 4 :(得分:0)

如果这是Google针对此问题的最佳结果之一,您可以执行以下操作:

如果您需要Datlist Control,则需要设置属性RepeatLayout =“Flow”

在这里找到了Anwser:http://forums.asp.net/t/1388759.aspx?Datalist+without+table+