我想按下按钮点击动态创建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>
这两项都没有用。
我犯了什么错误?
有什么问题吗?
答案 0 :(得分: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);
}
答案 1 :(得分:1)
它给你一个div,因为你正在添加一个div 请记住,asp.net需要您在之后的PostBack上创建所有动态添加的控件。
如果你想要两个控件,你必须在PlaceHolder中添加两个。
答案 2 :(得分:0)
只需使用一个带有一些ID的父div(预定义允许说id="dvDynamic"
)和runat="server"
然后使用dvDynamic.innerHTML = "<div> /* dynamic div contents */ </div>"
它是最简单的方法,就像你在ASP.net中使用html元素一样,使用dom控件来更好地生成。动态创建控件将需要处理,接口和许多事情来协调该控件。由于它不是由系统预定义的。你必须创造它。
选择DOM元素选项。更快更好:)
我希望这会有所帮助:)