我试图在代码隐藏中构建一个表。我看起来像这样:
Content += "<tr>";
Content += "<td>" + dt.Rows[i]["Provision"].ToString() + "</td>";
Content += "<td>" + dt.Rows[i]["MarkForReview"].ToString() + "</td>";
Content += "<td>" + dt.Rows[i]["IssueType"].ToString() + "</td>";
Content += "<td>" + dt.Rows[i]["Resolution"].ToString() + "</td>";
Content += "<td>" + dt.Rows[i]["Feedback"].ToString() + "</td>";
Content += "<td><input type=\"button\" ID=\"btnEdit\" runat=\"server\" OnClick=\"btnEdit_OnClick\" Text=\"Edit\" /></td>";
Content += "</tr>";
问题在于我如何渲染“编辑”按钮。代码运行时,为按钮呈现的内容如下所示:
<td><input type="button" ID="btnEdit" runat="server" OnClick="btnEdit_OnClick" Text="Edit" /></td>
它一直给我一个&#34; JavaScript运行时错误&#34; btnEdit_OnClick不存在,但我在代码隐藏中有这个:
protected void btnEdit_OnClick(object sender, EventArgs e)
{
MdlCommentsExtender.Enabled = true;
MdlCommentsExtender.Show();
ScriptManager.GetCurrent(this).SetFocus(this.txtCommentBox);
}
此外,按钮呈现时没有文字。它只是一个小小的灰色按钮。
任何想法我做错了什么?
答案 0 :(得分:2)
您可以将按钮渲染为文字。但是,不会附加任何事件,因为它不在控制树中。
换句话说,当按钮回发到服务器时,不会触发click事件。
这是一个例子 -
protected void Page_Init(object sender, EventArgs e)
{
var btnEdit = new Button {ID = "btnEdit", Text = "Edit" };
btnEdit.Click += btnEdit_OnClick;
PlaceHolder1.Controls.Add(btnEdit);
}
<%@ Page Language="C#" ... %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<form id="form1" runat="server">
<asp:PlaceHolder runat="server" ID="PlaceHolder1" />
</form>
</body>