如何覆盖Datalist被渲染成Div而不是表?

Mhm*_*hmd 3 c# asp.net

我想将datalist渲染为div而不是table,重复列将由div上的float样式修复.

所以任何人都知道一个覆盖渲染方法来做到这一点.

谢谢.

Mhm*_*hmd 10

我找到了这个解决方案,但我发布它来帮助别人;

一些用户建议使用中继器,这是正确的,但这种情况下,更换div,而不是tabledatalist

RepeatLayout=RepeatLayout.Flow 
Run Code Online (Sandbox Code Playgroud)

这将使它spanbr.但是,使用HorizontalRepeatDirection西港岛线删除br,但仍然呈现项目span.

RepeatDirection=RepeatDirection.Horizontal 
Run Code Online (Sandbox Code Playgroud)

此语句将删除br但仍然使用的项目span.

因此,如果您不想使用,RenderContents请覆盖以创建自己的divs外部span并删除,如下所示:brHorizontal RepeatDirection

protected override void RenderContents(HtmlTextWriter w)
{
    writer.WriteBeginTag("div");
    writer.WriteAttribute("id", this.ClientID);
    writer.WriteAttribute("class", cssClass);
    writer.Write(HtmlTextWriter.TagRightChar);
    foreach (DataListItem li in this.Items)
    {
        writer.WriteBeginTag("div");
        writer.WriteAttribute("id", li.ClientID);
        writer.WriteAttribute("class", li.CssClass);
        writer.Write(HtmlTextWriter.TagRightChar);
        li.CssClass = null; // clear css not to added in span
        li.RenderControl(w);
        writer.WriteEndTag("div");
    }
    writer.WriteEndTag("div");

}
Run Code Online (Sandbox Code Playgroud)

致以我的问候