2010-12-04 3 views
7

DataListは<table>または<span>タグでレンダリングされますが、これは望ましくありません。asp:DataListからテーブルとスパンタグの両方を削除する

私はRepeatLayout="Flow"を設定しましたが、それでも私にスパンが与えられます。 私はRepeaterDirection="Horizontal"を設定しましたが、それでも私にはテーブルが与えられます。

どのようにすべてのスパン\テーブルなしで簡単なデータリストを取得できますか?

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

ありがとうございます!

答えて

12

制御がDataListである必要がありますか? Repeaterを使ってレンダリングされたHTMLを完全に制御したり、オブジェクトをループしたり、出力を手動でレンダリングしたりすることもできます。

+0

よく、DBからのリストを解析しています。私はちょうどスタイルを制御したいと思います。リピーターは私にスパン\テーブルを与えませんか?単純なデータですか? – NATTO

+0

@Nat:リピーターを使用すると、必要なhtmlを指定できます。 – Chris

+0

@Nat:データリストのようにリピータがコンテンツをラップしてはいけません。 – David

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

DataListは、UPDATEコマンドとDELETEコマンドでデータベースを更新するなどの追加機能を提供するため、Repeaterを使用できないことがあります。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個のスパンタグがあります。それらを削除するには、ページにjQueryスクリプトを追加します。

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

私の場合、私がコントロールする順序付けられていないリストを作りたいと思っていました。しかし、obviusとして、DataListのHTMLを変更し、jQuery(.item)内の適切な項目をターゲットにすることで、他の方法で行うことができます。

これは、DataList機能を必要とし、Repeaterで行うことができない他の人に役立ちます。

+0

これは最終的に問題のおかげで解決しました – Devjosh

+0

OPは ' 'を使って' br'と 'span'を削除する方法について質問したので、これはこのトレッドにとってはるかに良い解決策です。 OPを使用して ' 'を使用します。 – Pegues

0

私は、ヘッダー内<Table>を使用していたため、このエラーを取得し、フッターテンプレートで</table>た、私はそれを除去し、私は、各テンプレートにテーブル全体を使用し、それが不要なタグを取得して停止します。このAS

関連する問題