10

<table>一个 DataList 是用or标记呈现的<span>,这是我不想要的。

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

我怎样才能得到一个没有所有跨度\表的简单数据列表?

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

提前致谢!

4

5 回答 5

13

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

于 2010-12-04T16:41:58.080 回答
6

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

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

asp代码:

<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>

就我而言,我想生成我控制的无序列表。但显然,您可以通过更改 DataList 中的 HTML 并在 jQuery (.item) 中定位正确的项目来执行任何其他方式。

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

于 2011-12-06T07:51:49.640 回答
3

我认为您可能会发现使用中继器更容易,它允许您设置自己的标记。

基本上,创建一个 asp 转发器,以与 datalist 大致相同的方式将数据绑定到它,并在“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>

你只会得到你放在模板中的标记,没有别的。如果不需要,可以跳过页眉和页脚。如果您根本不需要标记,只要模板中没有标签,数据就会以纯文本形式出现。

于 2010-12-04T16:44:02.730 回答
0

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

于 2013-08-31T05:09:04.463 回答
0

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

如果您需要 Datlist 控件,则需要设置属性 RepeatLayout="Flow"

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

于 2014-05-08T08:55:26.880 回答