我正在开发一个asp.net应用程序(框架4.7)。我试图根据数据库中的值动态创建按钮。我正在使用母版页。在内容占位符内部,我编写了以下代码:
<asp:Panel ID="Panel1" runat="server">
</asp:Panel>
在后面的代码中,我将在另一个按钮的click事件上动态创建按钮:
protected void btnGo_Click(object sender, EventArgs e)
{
List<SqlParameter> dbParameters = new List<SqlParameter>();
dbParameters.Add(new SqlParameter("@UserId", Convert.ToInt64(ddlProfile.SelectedValue)));
dbParameters.Add(new SqlParameter("@ProfileId", Convert.ToInt64(ddlProfile.SelectedValue)));
dbParameters.Add(new SqlParameter("@ClientId", "AP001C01"));
DataTable dt = DBManager.GetDataTable("espGetServiceUserWise", dbParameters, conn);
foreach (DataRow row in dt.Rows)
{
if (row["Value"].ToString() == "Accounts")
{
Button btn = new Button();
btn.ID = "btnAccounts";
btn.Text = "Accounts";
btn.Click += new EventHandler(btnAccounts_Click);
Panel1.Controls.Add(btn);
}
else if(row["Value"].ToString() == "Income Tax")
{
Button btn = new Button();
btn.ID = "btnIT";
btn.Text = "Income Tax";
btn.Click += new EventHandler(btnIT_Click);
Panel1.Controls.Add(btn);
}
}
}
此代码动态创建按钮。我已经针对动态创建的按钮的click事件编写了以下代码:
protected void btnAccounts_Click(object sender, EventArgs e)
{
ClientScript.RegisterStartupScript(this.GetType(), "Accounts", "alert('Accounts!');", true);
}
protected void btnIT_Click(object sender, EventArgs e)
{
ClientScript.RegisterStartupScript(this.GetType(), "IT", "alert('IT');", true);
}
但是问题是,当我单击动态创建的按钮时,所有按钮都消失了。
可能正在发回邮件。我该如何解决该问题?谢谢
Partha