【问题标题】:Rendering a button in C# code-behind在 C# 代码隐藏中呈现按钮
【发布时间】:2016-08-04 22:30:39
【问题描述】:

我正在尝试在代码隐藏中构建一个表。我所拥有的看起来像这样:

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>

它不断给我一个“JavaScript 运行时错误”,表明 btnEdit_OnClick 不存在,但我的代码隐藏中有这个:

    protected void btnEdit_OnClick(object sender, EventArgs e)
    {
        MdlCommentsExtender.Enabled = true;
        MdlCommentsExtender.Show();
        ScriptManager.GetCurrent(this).SetFocus(this.txtCommentBox);
    }

此外,按钮呈现时没有文本。它只是一个灰色的小按钮。

任何想法我做错了什么?

【问题讨论】:

  • 这就是我查看源代码时显示的内容。
  • 活动注册了吗?在您的OnLoad 方法或类似的方法中,您需要订阅该事件,否则发布者会忽略。不确定代码中的所有内容,但使用现在可用的内容,Content.OnClick += btnEdit_OnClick 或类似的内容。

标签: c# asp.net code-behind


【解决方案1】:

您可以将按钮呈现为文字。但是,不会将任何事件附加到它,因为它不在控制树中。

也就是说,当按钮回传到服务器时,不会触发点击事件。

这是一个例子 -

protected void Page_Init(object sender, EventArgs e)
{
    var btnEdit = new Button {ID = "btnEdit", Text = "Edit" };
    btnEdit.Click += btnEdit_OnClick;
    PlaceHolder1.Controls.Add(btnEdit);
}

ASPX

<%@ 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>

【讨论】:

    猜你喜欢
    • 2012-08-19
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 2014-08-12
    相关资源
    最近更新 更多