晚安
我动态创建的asp按钮将处理数据行的编辑和删除,但不会触发事件。
我使用html.append操作在我的aspx页面中显示一个表,然后将其放入我已添加到aspx页面的占位符中,如下所示:
protected void Page_Load(object sender, EventArgs e)
{
if (!(Page.IsPostBack))
{
Session.Abandon();
Session.RemoveAll();
Session.Clear();
HttpContext.Current.Session.Abandon();
if (!(ConnectMysql()))
{
ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('Failed to Connect to Database!');", true);
}
}
CreateObjs();
GenerateHtmlTable();
}
这是我生成表的方法
private void GenerateHtmlTable()
{
otblUsers.SelectAll();
DataTable dt = otblUsers.DefaultView.ToTable();
//Building an HTML string.
StringBuilder html = new StringBuilder();
//Table start.
html.Append("<thead>");
//Building the Header row.
html.Append("<tr>");
int j = 0;
foreach (DataColumn column in dt.Columns)
{
html.Append("<th>");
html.Append(column.ColumnName);
html.Append("</th>");
j++;
}
html.Append("</tr>");
html.Append("</thead>");
html.Append("<tbody>");
//Building the Data rows.
int rowcnt = 0;
foreach (DataRow row in dt.Rows)
{
rowcnt++;
html.Append("<tr>");
int k = 0;
foreach (DataColumn column in dt.Columns)
{
k++;
html.Append("<td>");
html.Append(row[column.ColumnName]);
if (j == k) //place button before next row
{
html.Append("<div class=\"pull-right\"><asp:Button ID = \"btnEdit\" class=\"btn btn-mini\" runat= \"server\" OnClick=\"btnEdit_Click\" OnServerClick=\"btnedit_ServerClick\"><i class=\"icon-pencil\"></i>Edit</button></div>");
html.Append(" <div class=\"pull-right\"><asp:Button ID = \"btnDelete\" class=\"btn btn-mini\" runat= \"server\" OnServerClick=\"btnedit_ServerClick\" OnClick=\"btnEdit_Click\" Type=\"submit\"><i class=\"icon-remove\"></i>Delete</button></div>");
} html.Append("</td>");
}
html.Append("</tr>");
}
html.Append("</tbody>");
//Append the HTML string to Placeholder.
PlaceHolder1.Controls.Add(new Literal { Text = html.ToString() });
以下是不会激发的测试事件:
protected void btnedit_ServerClick(object sender, EventArgs e)
{
Console.Write("1212");
}
protected void btnEdit_Click(object sender, EventArgs e)
{
Console.Write("sdfsd");
}
这就是我将占位符添加到aspx页面的方式:
<asp:PlaceHolder ID = "PlaceHolder1" runat="server" />
我现在只有一行数据用于测试目的。我确实意识到我需要动态创建asp按钮,每行都有唯一的名称和ID。
如何让事件发生?我是一名WinForms开发人员,我知道这可能是由于缺乏经验而且可能是关于会话刷新的事情?