ASPからテーブルとスパンの両方のタグを削除する:Datalist
-
08-10-2019 - |
質問
でレンダリングされたdatalistis <table>
また <span>
タグ、私は望んでいません。
私は設定しました RepeatLayout="Flow"
しかし、それはまだ私にスパンを与えます。私は設定しました RepeaterDirection="Horizontal"
しかし、それはまだ私にテーブルを与えてくれます。
すべてのスパンテーブルなしでシンプルなデータリストを取得するにはどうすればよいですか?
<asp:DataList ID="MyDataList" runat="server" RepeatLayout="Flow" RepeatDirection="Horizontal">
<ItemTemplate>
....
</ItemTemplate>
</asp:Datalist>
前もって感謝します!
解決
あなたはそれをaにする必要がありますか? DataList
まったく制御しますか?レンダリングされたHTMLを完全に制御できます Repeater
または、オブジェクトをループするだけで、出力を手動でレンダリングするだけです。
他のヒント
Datalistは追加の可能性を提供するため、リピーターを使用できない場合があります(更新および削除コマンドを介してデータベースを更新し、ASP:DataSourceで直接連携するなど)。
したがって、まだデータリストを使用する必要があるが、それが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)の適切なアイテムをターゲットにすることで、他の方法でそれを行うことができます。
これがデータリストの機能を必要とし、リピーターでそれを行うことができない他の誰かに役立つことを願っています。
使いやすいと思うかもしれません リピータ これにより、独自のマークアップを設定できます。
基本的に、ASPリピーターを作成し、データリストとほぼ同じ方法でデータにバインドし、「ItemTemplate」タグでマークアップを作成します。 (これはメモリからのものです - 私は私のロービングラップトップにいるので、構文をチェックするためにビジュアルスタジオを持っていないでください。)
<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>
テンプレートに入れたマークアップのみを取得します。他には何もありません。ヘッダーとフッターを必要としない場合は、ヘッダーとフッターをスキップできます。また、マークアップがまったく必要な場合は、テンプレートにタグがない場合は、データがプレーンテキストとして表示されます。
私が使用していたので、私はこのエラーを受けていました <Table>
ヘッダーと </table>
フッターテンプレートでは、私はそれをリムーバーし、各テンプレートでテーブル全体を使用し、その不要なタグの取得を停止します。
これは、この問題のGoogleの最上位の結果の1つであるため、次のことを行うことができます。
Datlistコントロールが必要な場合は、プロパティを設定する必要がありますRepeatlayout = "Flow"
Anwserがここに見つかりました: http://forums.asp.net/t/1388759.aspx?datalist+ without+table+