5

ボタンをクリックすると、動的に Div を作成しようとしています。

そのために、このリンクを参照しました>> http://forums.asp.net/t/1349244.aspx

サーバー側(.csページ)に以下のコードを作成>>

public static int i = 0;
    protected void Button1_Click(object sender, EventArgs e)
    {
        i++;
        HtmlGenericControl newControl = new HtmlGenericControl("div");

        newControl.ID = "NEWControl"+i;
        newControl.InnerHtml = "This is a dynamically created HTML server control.";

        PlaceHolder1.Controls.Add(newControl);
    }

このコードでは、ボタンを押すたびに 1 つの div しか表示されませんでした。div を追加したかったのです。

JavaScriptを使用したクライアント側でも試しました>>

<body>
    <form id="form1" runat="server">
    <div>

        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" OnClientClick="addDiv();" />

    </div>
    <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
    </form>
</body>
</html>
<script type="text/javascript">
    function addDiv() {
        alert("Control comming in function");
        var r = document.createElement('Div');
        r.style.height = "20px";
        r.style.width = "25px";
        r.appendChild("div");
        alert("Control going out of function");
    }
</script>

これらは両方とも機能しませんでした。

私はどんな間違いをしていますか?

何か間違っていることでも?

4

3 に答える 3

2

これを使って

    public int Index
    {
       get
       {
          if(ViewState["Index"]==null)
          {
             ViewState["Index"]=0;
          }
          else
          {
             ViewState["Index"]=int.Parse(ViewState["Index"].ToString())+1;
          }

          return int.Parse(ViewState["Index"].ToString());    
       }
   }

    protected void Button1_Click(object sender, EventArgs e)
    {
        HtmlGenericControl newControl = new HtmlGenericControl("div");
        newControl.ID = "NEWControl"+Index;
        newControl.InnerHtml = "This is a dynamically created HTML server control.";

        PlaceHolder1.Controls.Add(newControl);
    }
于 2013-03-21T06:11:06.520 に答える
1

1つのdivを追加しているため、1つのdivが提供されています。
その後、asp.net では、PostBack に動的に追加されたすべてのコントロールを作成する必要があることに注意してください。

2 つのコントロールが必要な場合は、PlaceHolder に 2 つ追加する必要があります。

于 2013-03-21T05:43:38.403 に答える
0

1つの親divをいくつかのIDで使用するだけです(定義済みと言いますid="dvDynamic"runat="server"

そしてそれを使用しますdvDynamic.innerHTML = "<div> /* dynamic div contents */ </div>"

ASP.net で html 要素を使用しているかのように、より良い生成のために dom コントロールを使用する最も簡単な方法です。コントロールを動的に作成するには、そのコントロールと調整するために、ハンドル、インターフェイス、および多くのものが必要になります。システムによって事前定義されていないため。作成する必要があります。

SO DOM 要素オプションを選択します。それはより速く、より良いです:)

これが役立つことを願っています:)

于 2013-03-21T05:38:29.730 に答える