Rimozione di entrambi i tag table e span da asp: DataList
-
08-10-2019 - |
Domanda
Un DataListis reso con <table>
o <span>
tag, che non voglio.
Ho impostato RepeatLayout="Flow"
ma che ancora mi dà campate.
Ho impostato RepeaterDirection="Horizontal"
ma che ancora mi danno le tabelle.
come posso ottenere un semplice datalist senza tabelle tutte le campate \?
<asp:DataList ID="MyDataList" runat="server" RepeatLayout="Flow" RepeatDirection="Horizontal">
<ItemTemplate>
....
</ItemTemplate>
</asp:Datalist>
Grazie in anticipo!
Soluzione
Avete bisogno di essere un controllo DataList
a tutti? È possibile avere il pieno controllo del rendering HTML utilizzando un Repeater
o anche solo scorrendo i vostri oggetti e manualmente il rendering l'output.
Altri suggerimenti
A volte non è possibile utilizzare Repeater, DataList perché fornisce ulteriori possibilità (come l'aggiornamento del database tramite comandi UPDATE e DELETE, lavorando direttamente con l'asp: DataSource).
Quindi, se hai ancora bisogno di usare DataList, ma vuole evitare di usarlo di HTML, è possibile fare un po 'di jQuery su di esso, come ho fatto.
Codice 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>
Questo produrrà HTML in questo modo:
<span id="SomeId" style="">
<span>
<li class="item ui-droppable" id="31349">
Whatever else you need here.
</li>
</span>
</span>
Ovviamente ci sono 2 tag span non è necessario. Per rimuoverli, è possibile aggiungere lo script jQuery nella pagina.
<script type="text/javascript">
$(document).ready(function () {
$('.item').unwrap(); $('.item').unwrap();
});
</script>
Nel mio caso, ho voluto produrre lista non ordinata che io controllo. Ma, come obvius, si può fare qualsiasi altro modo, modificando il codice HTML in DataList e il targeting l'elemento giusto in jQuery (.item).
Spero che questo aiuti qualcun altro che le esigenze funzionalità DataList e non può farlo con ripetitore.
Credo che si potrebbe trovare più facile usare un ripetitore che vi permetterà di impostare il proprio markup
Bascially, creare un ripetitore asp, legano i dati ad esso più o meno allo stesso modo in cui il DataList, e costruire il vostro markup nel tag "ItemTemplate". (Avviso questo è dalla memoria -. Sono sul mio portatile itinerante, in modo da non avere Visual Studio per controllare la sintassi)
<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>
Si otterrà solo il markup si mette nel template, nient'altro. È possibile saltare l'intestazione e piè di pagina se non ne hanno bisogno. E se non si desidera marcatura a tutti, solo non hanno tag nel modello, i dati verranno fuori come testo semplice.
mi è stato sempre questo errore perché stavo usando <Table>
nell'intestazione e </table>
nei modelli di piè di pagina, ho rimozione che, e ho usato un intero tavolo su ogni modello e si ferma sempre che i tag indesiderati.
Dato che questo è uno dei primi risultati su Google per questo problema è possibile effettuare le seguenti operazioni:
Se è necessario il controllo Datlist sarà necessario impostare la proprietà RepeatLayout = "Flow"
anwser stato trovato qui: http: //forums.asp .net / t / 1388759.aspx? Datalist + senza + tavolo +