Удаление тегов таблицы и span из asp: DataList - PullRequest
9 голосов
/ 04 декабря 2010

DataListis отображается с тегами <table> или <span>, которые мне не нужны.

Я установил RepeatLayout="Flow", но это все равно дает мне интервалы.Я установил RepeaterDirection="Horizontal", но это все равно дает мне таблицы.

как мне получить простой набор данных без всех пролетов \ таблиц?

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

Заранее спасибо!

Ответы [ 5 ]

12 голосов
/ 04 декабря 2010

Вам нужно, чтобы это был DataList контроль вообще? Вы можете иметь полный контроль над отображаемым HTML-кодом, используя Repeater или даже просто циклически перебирая объекты и вручную выводя результаты.

6 голосов
/ 06 декабря 2011

Иногда вы не можете использовать 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>

В моем случае я хотел создать неупорядоченный список, которым я управляю. Но, как и прежде, вы можете сделать это любым другим способом, изменив HTML в DataList и нацеливаясь на нужный элемент в jQuery (.item).

Надеюсь, что это поможет кому-то еще, которому нужна функциональность DataList и который не может сделать это с Repeater.

3 голосов
/ 04 декабря 2010

Я думаю, вам может быть проще использовать ретранслятор , который позволит вам установить собственную разметку.

По сути, создайте ретранслятор 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>

Вы получите только разметку, которую вы вставили в шаблоны, и ничего больше,Вы можете пропустить верхний и нижний колонтитулы, если они вам не нужны.А если вы вообще не хотите разметки, просто не используйте теги в своем шаблоне, данные будут отображаться в виде простого текста.

0 голосов
/ 08 мая 2014

Поскольку это один из лучших результатов в Google для этой проблемы, вы можете сделать следующее:

Если вам нужен элемент управления Datlist, вам нужно установить свойство RepeatLayout = "Flow"

Anwser был найден здесь: http://forums.asp.net/t/1388759.aspx?Datalist+without+table+

0 голосов
/ 31 августа 2013

Я получил эту ошибку, потому что я использовал <Table> в заголовке и </table> в шаблонах нижнего колонтитула, я удалил это, и я использовал целую таблицу в каждом шаблоне, и она перестала получать ненужные теги.

...