C# 在运行时创建两个div的集合

C# 在运行时创建两个div的集合,c#,asp.net,html,css,C#,Asp.net,Html,Css,我有一个大约600像素宽的页面。在这个页面中,我想动态显示一个Div,它本身动态地获取标题和其他文本。文本来自数据库。Div看起来有点像这样,其高度可以根据其包含的文本而变化 显示此动态Div的表格如下所示: Div应显示如下: 如果有另一条记录可用,则应显示为两条记录的集合(动态),否则只应显示一条记录 我用一个示例Div尝试了这段代码,但我想知道是否有更聪明的方法: HtmlGenericControl divBlock = new HtmlGenericControl("div");

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

显示此动态Div的表格如下所示:

Div应显示如下:

如果有另一条记录可用,则应显示为两条记录的集合(动态),否则只应显示一条记录

我用一个示例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>";

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

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

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


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

您可以使用
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>
Asp.net应该处理其余的问题

MainDiv.Controls.Add(divBlock);
 <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>
protected void Page_Load(object sender, EventArgs e)
{
   NamesDL.DataSource = getDataFromDatabase();
   NamesDL.DataBind();
}