Удаление как таблицы, так и охватывает теги от ASP: DataList
-
08-10-2019 - |
Вопрос
Datalistis, сделанные с <table>
или <span>
Теги, которые я не хочу.
Я установил RepeatLayout="Flow"
Но это все еще дает мне пролеты. Я установил RepeaterDirection="Horizontal"
Но это все еще дает мне столы.
Как я могу получить простой Datalist без всех пролетов таблиц?
<asp:DataList ID="MyDataList" runat="server" RepeatLayout="Flow" RepeatDirection="Horizontal">
<ItemTemplate>
....
</ItemTemplate>
</asp:Datalist>
Заранее спасибо!
Решение
Вам нужно, чтобы это было DataList
контролировать вообще? Вы можете иметь полный контроль над визуализированным HTML с помощью Repeater
Или даже просто зацикливаться через ваши объекты и вручную рендурируйте свой выход.
Другие советы
Иногда вы не можете использовать Repeater, поскольку DataList предоставляет дополнительные возможности (например, обновление базы данных через команды обновления и удаления, работая непосредственно с помощью 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>
В моем случае я хотел произвести неупорядоченный список, который я контролирую. Но каквий, вы можете сделать это любым другим способом, изменив HTML в Datalist и нацеливаю на нужный элемент в jQuery (.item).
Надеюсь, это поможет кому-то еще, что нуждается в функциональности хранения данных и не может сделать это с помощью повторителя.
Я думаю, что у вас может быть легче использовать повторитель Что позволит вам установить собственную разметку.
Принципиально создайте ASP Repeater, свяжите ваши данные к нему так же одинаково, как 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>
Вы получите только разметку, которую вы поместите в шаблоны, больше ничего. Вы можете пропустить заголовок и нижний колонтитул, если вам это не нужно. И если вы не хотите разметки вообще, просто нет тегов в вашем шаблоне, данные выйдут как простой текст.
Я получал эту ошибку, потому что я использовал <Table>
в заголовке и </table>
В шаблонах нижнего колонтитула я получаю удаление этого, и я использовал целый стол на каждом шаблоне, и она перестает получать эти нежелательные бирки.
Поскольку это один из лучших результатов в Google для этой проблемы, вы можете сделать следующее:
Если вам нужен элемент управления DATLIST, вам нужно будет установить свойство RepeatLayout = «поток»
Anwser был найден здесь: http://forums.ass.asp.net/t/1388759.aspx?datalist+withoutoutefale+