<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication6.WebForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="创建" />
<br />
<asp:Label ID="Label1" runat="server" Text=""></asp:Label>
<br />
<asp:Panel ID="Panel1" runat="server">
</asp:Panel>
<div>
</div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication6
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
this.CreateControls();
}
protected void Button1_Click(object sender, EventArgs e)
{
List<string> ls = new List<string>();
ls.Add("1");
ls.Add("2");
ls.Add("3");
this.ViewState["ls"] = ls;
this.CreateControls();
}
void CreateControls()
{
if (this.ViewState["ls"] != null)
{
var ls = (List<string>)this.ViewState["ls"];
this.Panel1.Controls.Clear();
foreach (var r in ls)
{
var b = new Button();
b.Text = r;
b.Click += new EventHandler(Button_Click);
this.Panel1.Controls.Add(b);
}
}
}
protected void Button_Click(object sender, EventArgs e)
{
this.Label1.Text = (sender as Button).Text + "_" + DateTime.Now.ToString();
}
}
}
第一个问题:
点击“创建”后创建了三个button,分别点击这三个button后都能触发click事件。
问题:连续点击俩次“创建”后,在点击被创建的button,第一次竟然无法触发click,再点一次竟然可以了。
想不明白这是为什么?
第二个问题:
在动态创建button时,如果指定了id,比如上面的代码写成这样:
foreach (var r in ls)
{
var b = new Button();
b.ID = "s" + Guid.NewGuid().ToString();
b.Text = r;
b.Click += new EventHandler(Button_Click);
this.Panel1.Controls.Add(b);
}
设置id属性后创建的button竟然无法触发click.
请高人解答这俩个问题。