2010-12-04 87 views
7

DataListis使用<table><span><span>标签呈现,这是我不想要的。从asp中删除表格和span标签:DataList

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

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

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

在此先感谢!

回答

12

你需要它是一个DataList控制吗?通过使用Repeater或者只是循环遍历对象并手动呈现输出,您可以完全控制呈现的HTML。

+0

好吧,它只是解析查询从数据库到列表..我只是想控制风格..使用中继器不会给我span \表?只是普通的数据? – NATTO 2010-12-04 16:43:03

+0

@Nat:中继器允许你指定你想要的任何html。 – Chris 2010-12-04 16:44:45

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> 

你只会让你把模板标记,没有别的。如果你不需要它们,你可以跳过页眉和页脚。如果你完全不需要标记,只需在你的模板中没有标签,数据就会以纯文本形式出现。

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> 

这将产生HTML这样的:

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

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

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

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

希望这可以帮助需要DataList功能的其他人,而无法使用Repeater完成此操作。

0

我得到了这个错误,因为我在页脚模板中使用了<Table>,在页脚模板中使用了</table>,我卸载了该模板,并且在每个模板上使用了整个表格,并且它停止获取不需要的标记。