Question

Un DataListis rendu avec des balises <table> ou <span>, que je ne veux pas.

Je me suis fixé RepeatLayout="Flow" mais qui me donne encore portées. Je me suis fixé RepeaterDirection="Horizontal" mais qui me donne toujours les tables.

Comment puis-je obtenir simple datalist sans que toutes les portées de tables?

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

Merci à l'avance!

Était-ce utile?

La solution

Avez-vous besoin d'être un contrôle DataList du tout? Vous pouvez avoir un contrôle total sur le rendu HTML en utilisant un Repeater ou même en boucle juste à travers vos objets et rendu manuellement votre sortie.

Autres conseils

Parfois, vous ne pouvez pas utiliser Répéteur, car DataList offre des possibilités supplémentaires (comme la mise à jour de la base de données via des commandes UPDATE et DELETE, travaillant directement avec l'aspic: DataSource).

Par conséquent, si vous avez encore besoin d'utiliser DataList mais que vous voulez éviter de html, vous pouvez faire un peu de jQuery sur le dessus de celui-ci comme je l'ai fait.

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

Cela produira HTML comme ceci:

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

Évidemment, il y a 2 balises span vous n'avez pas besoin. Pour les supprimer, vous pouvez ajouter un script jQuery sur la page.

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

Dans mon cas, je voulais produire liste non ordonnée que je contrôle. Mais comme Obvius, vous pouvez le faire d'une autre manière en changeant le code HTML dans DataList et cibler l'élément en plein jQuery (.item).

Espérons que cela aide quelqu'un d'autre qui a besoin de fonctionnalités DataList et ne peut le faire avec répétiteur.

Je pense que vous trouverez peut-être plus facile d'utiliser un qui vous permettra de définir votre propre balisage

Bascially, créez un répéteur asp, lier vos données à lui dans la même manière que le datalist et construire votre balisage dans la balise « itemtemplate ». (Avertissement ceci est de la mémoire -. Je suis sur mon ordinateur portable roving, donc ne pas Visual Studio pour vérifier la syntaxe)

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

Vous n'obtiendrez le balisage que vous mettez dans les modèles, rien d'autre. Vous pouvez ignorer l'en-tête et pied de page si vous ne les avez pas besoin. Et si vous voulez pas de balisage du tout, ont tout simplement pas de balises dans votre modèle, les données sortiront sous forme de texte.

je recevais cette erreur parce que j'utilisais <Table> dans l'en-tête et </table> dans les modèles de bas de page, je décapant, et j'utilisé une table entière sur chaque modèle et il arrête d'obtenir que les balises indésirables.

c'est l'un des résultats de haut sur Google pour ce problème, vous pouvez faire ce qui suit:

Si vous avez besoin du contrôle Datlist vous devez définir la propriété RepeatLayout = « Flow »

anwser a été trouvé ici: http: //forums.asp .net / t / 1388759.aspx? Datalist + sans + tableau +

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top