首页 > 解决方案 > 服务器端点击的html按钮标签不起作用

问题描述

我在事件 onserclick 中有问题。

HTML

<asp:GridView ID="customergridview" runat="server" AutoGenerateColumns="False" CssClass="table table-bordered"
    Width="100%" ClientIDMode="Static">
    <Columns>
        <asp:BoundField DataField="Customer ID" HeaderText="Customer ID" ReadOnly="True"
            SortExpression="Customer ID"></asp:BoundField>
        <asp:BoundField DataField="Nama Customer" HeaderText="Nama Customer" SortExpression="Nama Customer">
        </asp:BoundField>
        <asp:BoundField DataField="Alamat" HeaderText="Alamat" SortExpression="Alamat"></asp:BoundField>
        <asp:BoundField DataField="Nomor Kontak" HeaderText="Nomor Kontak" SortExpression="Nomor Kontak">
        </asp:BoundField>
        <asp:BoundField DataField="Tipe Outlet" HeaderText="Tipe Outlet" SortExpression="Tipe Outlet">
        </asp:BoundField>
        <asp:TemplateField ShowHeader="false" HeaderText="Action">
            <ItemTemplate>
                <button runat="server" id="btnedit" type="button" title="Edit"
                    onserverclick="btnedit_ServerClick"><img src="img/pencil 64.png" height="25px"></button>
                <button runat="server" id="btndelete" title="Delete" onclick="btndelete_onclick"><img
                        src="img/delete 64.png" height="25px"></button>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

我在服务器端创建一个 btnedit 事件。

服务器端

private void btnedit_ServerClick(object sender, EventArgs e)
{
    System.Text.StringBuilder sb = new System.Text.StringBuilder();
    sb.Append("<script type='text/javascript'>");
    sb.Append("$('#EditCustomer').modal('show');");
    sb.Append("</script>");
    ScriptManager.RegisterStartupScript(this, this.GetType(), "LaunchServerSide", sb.ToString(), false);
}

但是我在编译时遇到了这样的问题。

编译器错误消息:CS1061:“managecustomers_aspx”不包含“btnedit_ServerClick”的定义,并且找不到接受“managecustomers_aspx”类型的第一个参数的扩展方法“btnedit_ServerClick”(您是否缺少 using 指令或程序集引用?)

这个错误是什么意思?我应该纠正什么?

标签: c#asp.net

解决方案


该错误是因为您的服务器端方法是private. 因为它是私有的,所以它不能用于派生类。

将其更改为protected

protected void btnedit_ServerClick(object sender, EventArgs e)

推荐阅读