0

幅が約600pxのページがあります。このページでは、Divを動的に表示したいと思います。Div自体はヘッダーやその他のテキストを動的に取得します。テキストはデータベースから取得されます。Divはこのように見え、高さは含まれるテキストによって異なります。

この動的Divが表示されるテーブルは次のようになります。 ここに画像の説明を入力してください

Divは次のように表示されます。

ここに画像の説明を入力してください

利用可能な別のレコードがある限り、2つのセットとして(動的に)表示される必要があります。それ以外の場合は、1つだけが表示されます。

サンプルの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と呼んでいますが、あなたが本当に意味しているのは、2つまたは3つの静的divがあり、それぞれのコンテンツと可視性を制御したいということです。

ページ上に静的コントロールを作成し、コードビハインドでテキストと表示を変更するだけです。

また、おそらく各divのユーザーコントロールを作成します。そうすれば、表示方法を気にすることなく、コードビハインドからユーザーコントロールのプロパティを操作できます。ユーザーコントロールのascx(ビュー)は、それらがどのように表示されるか、つまり、テーブル構造が何であるかなどを制御します。

代わりに、データベース内のデータに基づいてこれらのdivの数が変化する場合でも、ユーザーコントロールを使用しますが、データソースにバインドするある種のリピーターまたはリストコントロールでそれらを設定します。

于 2012-10-11T18:42:26.093 に答える