我正在尝试创建另一个按钮的动态LinkButtons
的{{1}}控件,即页面加载后。例如:我有一个名为Add Controls的按钮,其功能是动态添加链接按钮,并为所有这些动态创建链接按钮附加事件处理程序。但不幸的是,事件并没有被触发。以下是我所处理过的一段代码。
假设OnClick
是五个元素的集合。
DomainList.Items
以下是我的页面加载代码。
protected void AddControls_Click(object sender, EventArgs e)
{
foreach (ListItem item in DomainList.Items)
{
LinkButton deleteDomain = new LinkButton();
deleteDomain.Text = "Delete";
deleteDomain.Click += new System.EventHandler(deleteDomain_Click);
deleteDomain.ClientIDMode = ClientIDMode.Static;
deleteDomain.CommandArgument = item.Text;
divEditDomainName.Controls.Add(deleteDomain);
}
}
void deleteDomain_Click(object sender, EventArgs e)
{
//Some Code;
}
未触发protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Label lblEvent = this.Master.FindControl("SpEvent") as Label;
if (Session["eventname"] != null)
{
lblEvent.Text = Session["eventname"].ToString() + " " + "<i class='fa fa-angle-down'></i>";
}
Image imgEvent = this.Master.FindControl("ImageEvent") as Image;
imgEvent.ImageUrl = Convert.ToString(Session["ImageURL"]);
lblCreateOrganization.Text = Convert.ToString(Session["eventname"]);
BindOrganization();
EditOrganizationID.Attributes.Add("readonly", "readonly");
}
}
事件。我希望触发点击事件。
答案 0 :(得分:1)
当Click事件触发时,将发生回发,以便重新创建并再次附加到事件处理程序。
创建(和重新创建)动态控件的最佳位置是page_load或page_init事件处理程序。
试试这个
public bool AddControlsClicked
{
get
{
return Convert.ToBoolean(ViewState["AddControlsClicked"]);
}
set
{
ViewState["AddControlsClicked"] = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if(AddControlsClicked)
{
for (int i = 0; i < 5; i++)
{
LinkButton deleteDomain = new LinkButton();
deleteDomain.Text = "Delete";
deleteDomain.Click += new System.EventHandler(deleteDomain_Click);
//deleteDomain.ClientIDMode = ClientIDMode.Static;
//deleteDomain.CommandArgument = item.Text;
divEditDomainName.Controls.Add(deleteDomain);
}
}
}
void deleteDomain_Click(object sender, EventArgs e)
{
//Some Code;
}
protected void AddControls_Click(object sender, EventArgs e)
{
AddControlsClicked = true;
Page_Load(sender, e);
}