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