【问题标题】:error BC30456: '[Method]' is not a member of 'ASP.[CodeBehind]_aspx'错误 BC30456:'[Method]' 不是 'ASP.[CodeBehind]_aspx' 的成员
【发布时间】:2012-06-21 21:33:43
【问题描述】:

很简单的问题。我很确定我已经正确链接了类、方法、代码隐藏等。网上很多帖子说这与编译和/或 dll/bin 文件有关,但他们的帮助都没有对我有用。

Compiler Error Message: BC30456: 'gvLegs_PageIndexChanging' is not a member of 'ASP.nestedgridview_aspx'.

Source Error:

Line 43:    <asp:Label ID="lblEmpName" runat="server" Text='<%# Eval("Location")%>'></asp:Label>
Line 44:    <asp:Literal runat="server" ID="lit1" Text="</td><tr id='trCollapseGrid' style='display:none' ><td colspan='5'>" />
Line 45:    <asp:GridView ID="gvLegs" AutoGenerateColumns="False" runat="server" EnableViewState="False"
Line 46:    DataKeyNames="EmployeeId" ForeColor="#333333" PageSize="4" AllowPaging="True"
Line 47:    OnPageIndexChanging="gvLegs_PageIndexChanging">
Source File: C:\Users\tstanley\Desktop\NestedVB\NestedVB\NestedGridView.aspx    Line: 45 

NestedGridView.aspx

<%@ Page Language="vb" AutoEventWireup="false" codebehind="NestedGridView.aspx.vb" Inherits="NestedVB.NestedGridViewPaging2" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

NetedGridView.aspx.vb [代码隐藏] ...

 Private Sub gvLegs_PageIndexChanging(sender As Object, e As GridViewPageEventArgs)

如果有人对此有解决办法,那将对我有很大帮助,这样我就可以继续……调试实际代码哈哈。

【问题讨论】:

    标签: asp.net vb.net visual-studio-2010 web-applications


    【解决方案1】:

    gvLegs_PageIndexChanging 是私有的,但需要保护或公开。

    由于您使用的是 VB.NET,因此您也可以使用 handles clause:

    Private Sub gvLegs_PageIndexChanging(sender As Object, e As GridViewPageEventArgs) _
        Handles gvLegs.PageIndexChanging
    End Sub
    

    编辑:为了清楚起见,您可以在 ASP.NET 和 VB.NET 中使用三个选项来创建事件处理程序:

    1. 在 aspx 上以声明方式
    2. 在代码中与handles clause
    3. AddHandler(主要用于 VB.NET 中的动态控制)

    如果您使用选项 1,则事件处理程序必须至少受到保护,因为 aspx 页面继承自代码隐藏类。

    如果您使用选项 2,该方法可以是私有的,但您需要删除 aspx 上的声明性事件处理程序。

    【讨论】:

    • 使用句柄子句 + Private,我收到此错误:“找不到事件 'gvLegsPageIndexChanging'。”如果我使用 #2(半不确定“在 aspx 上声明”是什么意思,但使用受保护),我会得到一个完全空白的网页——这意味着正在发生一些不好/更糟糕的事情。
    • @Guy:你读过最后一句话吗?如果您使用Handles 子句并将gvLegs_PageIndexChanging 设为私有,则必须删除PageIndexChanging 事件的声明性事件订阅(aspx 上的声明性手段,这部分:OnPageIndexChanging="gvLegs_PageIndexChanging")。
    • 好吧,这就是我说的我不明白大声笑。好的,我知道了。现在我遇到了这个有趣的错误:“Handles 子句需要在包含类型或其基类型之一中定义的 WithEvents 变量。” gridview 不应该已经定义了这个事件吗? [注意:gvLegs 是 parentGridView 中模板字段内的嵌套 griview,这会改变什么吗? --> 如中,它不是在 .designer.vb 文件中自动创建的]
    • @Guy:当 GridView 在顶层的 aspx 页面上声明时,它自动具有 WithEvents(因此不嵌套在子控件中)并且不是动态创建的。当它是嵌套的 GridView 时,您需要使用选项 1 或 3。请注意,如果您使用 aspx 方法,则需要像前面提到的那样使 gvLegs_PageIndexChanging 受保护(AddHandler 可以是私有的)。
    • 好的,感谢您的帮助。你解决了我最初的问题,现在我只需要弄清楚将 AddHandler 放在哪里以及我要解决的所有其他问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    • 2016-10-21
    • 1970-01-01
    相关资源
    最近更新 更多