我的页面宽度约为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>";
我的设计页面中的表格标签包含一个主Div,如下所示:
<div id="MainDiv" runat="server"></div>
我在其中插入动态生成的div:
MainDiv.Controls.Add(divBlock);
答案 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,但是将它们设置在某种类型的转发器或列表控件中,并将其绑定到数据源。