2010-12-04 88 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>,我卸載了該模板,並且在每個模板上使用了整個表格,並且它停止獲取不需要的標記。