web-dev-qa-db-ja.com

C#コードビハインドでコンテナdivにdivを追加する方法

ASP.NET、C#

タイトルが示すように、プログラムで(c#コードビハインドファイル)divを別のコンテナーdiv(aspxページ内)に追加する方法を誰かが知っているのではないかと思いました。

前もって感謝します

21
ErnieStings

// divの新しいインスタンスを作成し、IDなどのすべての値を設定します。短いコード例をご覧ください。 WebアドでDivを作成するのに役立ちました

System.Web.UI.HtmlControls.HtmlGenericControl NewDiv = new 
    System.Web.UI.HtmlControls.HtmlGenericControl();
    NewDiv.ID = "divcreated";

または

protected void Page_Load(object sender, EventArgs e)
{
    System.Web.UI.HtmlControls.HtmlGenericControl createDiv =
    new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");      
    createDiv.ID = "createDiv";
    createDiv.Style.Add(HtmlTextWriterStyle.BackgroundColor, "Yellow");
    createDiv.Style.Add(HtmlTextWriterStyle.Color, "Red");
    createDiv.Style.Add(HtmlTextWriterStyle.Height, "100px");
    createDiv.Style.Add(HtmlTextWriterStyle.Width, "400px");
    createDiv.InnerHtml = " I'm a div, from code behind ";
    this.Controls.Add(createDiv);
}
30
Jacob O'Brien
Panel myChildPanel = new Panel();
myContainerPanel.Controls.Add(myChildPanel);
19
Matthew Vines

提案されたocdecioのようなパネルを使用する以外に、他のいくつかの可能性があります。

  • Div内でasp:Literalコントロールを使用し、事前生成されたHTMLでそれを埋めることができます。
  • Runat = "server"をdiv自体に追加し、HtmlGenericControlとしてアクセスし、コードビハインドから他のコントロールを追加します。
  • <%= ...%>を使用

必要な制御レベルに少し依存します。それでも、ほとんどの状況では、見えない状態から開始するパネルが最適です。

<div>    
<asp:Panel Visible="false" id="MyPanel" runat="server">
</asp:Panel>
</div>

次に、必要に応じて分離コードの可視性を変更します。

他の方法のいずれかを使用する場合の1つのケースは、IDに基づいてスタイルを割り当てるCSSファイルで立ち往生している場合です。その場合、.NETコントロールを使用することは実際にはオプションではありません。しかし、実際には、デザイナーを頭で叩いて、代わりにクラス名を使用するように指示する必要があります。

6
Thorarin

Divにマップするasp:Panelを使用します。

4
Otávio Décio

これは非常に古い質問かもしれませんが、支援するためのソリューションを追加したいと思います。

まず、ページに既にある「div」(別の「div」を追加するもの)にrunat = "server"プロパティを与えて、コードビハインドからアクセスできるようにします。次のようになります。

<div id="superDIV" class="someCssClass" runat="server"></div>

次に、Page_Load()メソッドに次を追加します。

protected void Page_Load(object sender, EventArgs e)
{
   //We create our new div
   System.Web.UI.HtmlControls.HtmlGenericControl newDiv = 
     new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");
   newDiv.ID = "newSuperDIV"; //<---Give and ID to the div, very important!
   newDiv.Style.Value = "background-color:white; height:61%;"; //<---Add some style as example
   newDiv.Attributes.Add("class", "amazingCssClass"); //<---Apply a css class if wanted
   superDiv.Controls.Add(newDiv); //<---Add the new div to our already existing div
}

Page_Load関数内に直接divを生成し、ポストバック後に存在することを保証します。(!IsPostBack){}のようなコードブロック内で生成しないでください。あなたのページで。

1
JCO9