在运行时创建两个Div的集合

时间:2012-10-11 18:32:38

标签: c# asp.net html css

我的页面宽度约为600像素。在这个页面中,我想动态显示一个Div,它本身会动态获取标题和其他文本。该文本来自数据库。 Div看起来有点像这样,高度可以根据它包含的文字而变化。

要显示此动态Div的表格如下: enter image description here

Div应如下所示:

enter image description here

它应该显示为一组两个(动态),只要有另一个记录可用,否则只应显示一个。

我尝试使用示例Div进行此代码,但我想知道是否有更聪明的方法:

HtmlGenericControl divBlock = new HtmlGenericControl("div");
divBlock.ID = "Blockdiv";
divBlock.Attributes["style"] = "width: 120px; height: auto; background-color:grey";
divBlock.InnerHtml = "<div><table><tr><td>This is sample Div</td></tr></table></div>";

我的设计页面中的表格标签包含一个主Div,如下所示:

<div id="MainDiv" runat="server"></div>

我在其中插入动态生成的div:

MainDiv.Controls.Add(divBlock);

2 个答案:

答案 0 :(得分:2)

您可以使用DataList控件来实现

 <asp:DataList runat="server" ID="NamesDL" RepeatColumns="2" RepeatDirection="Horizontal">
 <ItemTemplate>
    <div class="header">
       <%# Eval("CustomerName") %>
    </div>
    <div class="Details">
       <%# Eval("ProcessDetails") %>
    </div>
 </ItemTemplate>
 </asp:DataList>

在codebehind中

protected void Page_Load(object sender, EventArgs e)
{
   NamesDL.DataSource = getDataFromDatabase();
   NamesDL.DataBind();
}

Asp.net应该处理其余的

答案 1 :(得分:0)

我不会动态构造这个InnerHTML。你称之为动态div,但我认为你的意思是,你有两个或三个静态div,并且你想控制每个div的内容和可见性。

我会在页面上创建静态控件,然后在代码隐藏中,只需更改文本和可见性。

我也可能为每个div创建一个用户控件,然后您可以从后面的代码中与用户控件的属性进行交互,而不是担心它们的显示方式。用户控件的ascx(视图)将控制它们的呈现方式,即:表结构是什么,或者其他什么。

如果您拥有不同数量的这些div,基于数据库中的数据,我仍然会使用usercontrol,但是将它们设置在某种类型的转发器或列表控件中,并将其绑定到数据源。