0

我有一个大约 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);
4

2 回答 2

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>

在代码隐藏中

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

Asp.net 应该处理其余的

于 2012-10-11T18:43:47.927 回答
0

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

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

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

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

于 2012-10-11T18:42:26.093 回答