2010-12-04 23 views
7

Una DataListis representada con <table> o <span> etiquetas, que no quiero.Quitar las etiquetas de tabla y span de asp: DataList

He configurado RepeatLayout="Flow" pero eso todavía me da tramos. He establecido RepeaterDirection="Horizontal" pero eso todavía me da las tablas.

¿cómo puedo obtener un datalist simple sin todos los spans \ tables?

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

Gracias de antemano!

Respuesta

12

¿Necesita que sea un control DataList? Puede tener control total sobre el HTML renderizado utilizando un Repeater o incluso simplemente recorriendo los objetos y renderizando su salida de forma manual.

+0

así, es sólo analizar una consulta de db a una lista .. solo quiero controlar el estilo .. utilizando repetidor solía dame Span \ tablas? simplemente datos? – NATTO

+0

@Nat: un repetidor le permite especificar cualquier html que desee. – Chris

+0

@Nat: Correcto, un repetidor no debe envolver su contenido como lo hace un datalist. – David

3

Creo que le puede resultar más fácil usar un repeater que le permitirá establecer su propio marcado.

Básicamente, crea un repetidor asp, vincula tus datos a él de la misma manera que el datalist, y construye tu marcado en la etiqueta "itemtemplate". (Advirtiendo que esto es de la memoria -. Estoy en mi computadora portátil itinerante, por lo que no tiene Visual Studio para comprobar la sintaxis)

<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> 

Sólo obtendrá el marcado se pone en las plantillas, nada más. Puede omitir el encabezado y el pie de página si no los necesita. Y si no desea ningún marcado, simplemente no tiene etiquetas en su plantilla, los datos aparecerán como texto sin formato.

6

Algunas veces no puede usar Repeater, porque DataList ofrece posibilidades adicionales (como actualizar la base de datos mediante los comandos UPDATE y DELETE, trabajando directamente con el asp: DataSource).

Por lo tanto, si aún necesita utilizar DataList pero quiere evitar su html, puede hacer un poco de jQuery además de lo que hice.

código 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> 

Esto producirá HTML así:

<span id="SomeId" style=""> 
    <span> 
     <li class="item ui-droppable" id="31349"> 
     Whatever else you need here. 
    </li> 
    </span> 
</span> 

Obviamente hay 2 etiquetas span no necesitas. Para eliminarlos, puede agregar una secuencia de comandos jQuery en la página.

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

En mi caso, quería producir la lista desordenada que controlo. Pero como obvio, puede hacerlo de otra forma cambiando el HTML en DataList y seleccionando el elemento correcto en jQuery (.item).

Espero que esto ayude a alguien más que necesita funcionalidad DataList y no puede hacerlo con Repeater.

+0

esta última instancia resolvió el problema gracias – Devjosh

+0

Esta es una solución mucho mejor para esta banda de rodadura debido a que el OP le preguntó acerca de cómo quitar '' br' y span' usando '', y todos los demás responde a la OP para cambiar a usar ''. – Pegues

0

Recibí este error porque estaba usando <Table> en el encabezado y </table> en las plantillas de pie de página, eliminé eso, y utilicé una tabla completa en cada plantilla y deja de obtener las etiquetas no deseadas.

Cuestiones relacionadas