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);
    }

每次按下按钮时,这段代码只给了我一个 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

它给你一个 div,因为你正在添加一个 div。
请记住,asp.net 之后需要您在非常 PostBack 上创建所有动态添加的控件。

如果您想要两个控件,则必须将两个添加到 PlaceHolder。

于 2013-03-21T05:43:38.403 回答
0

只需使用一个带有一些 ID 的父 div(比如预定义id="dvDynamic")和runat="server"

然后使用它dvDynamic.innerHTML = "<div> /* dynamic div contents */ </div>"

它是最简单的方法,就像您在 ASP.net 中使用 html 元素一样,使用 dom 控件来更好地生成。控件的动态创建将需要处理、接口和许多与该控件协调的东西。因为它不是由系统预定义的。你必须创建它。

所以选择 DOM 元素选项。那更快更好:)

我希望这个能帮上忙 :)

于 2013-03-21T05:38:29.730 回答