3

在 GridView 中,为什么我必须在同一页面而不是 C# 文件中定义选择方法?

例如,在 index.aspx 中,我有

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="GridViewApp.index" %>     
<asp:GridView ID="GridView1" runat="server" 
          onselectedindexchanged="GridView1_SelectedIndexChanged" 
        DataSourceID="SqlDataSource2" AllowPaging="True" AllowSorting="True">
            <Columns>
                <asp:CommandField ShowSelectButton="True"  />
            </Columns>
        </asp:GridView>

GridView1_SelectedIndexChanged,这个方法必须在 index.aspx 而不是 index.aspx.cs 中定义?

错误信息是

Compiler Error Message: CS1061: 'ASP.index_aspx' does not contain a definition for 'GridView1_SelectedIndexChanged' and no extension method 'GridView1_SelectedIndexChanged' accepting a first argument of type 'ASP.index_aspx' could be found (are you missing a using directive or an assembly reference?)

更新:解决。清理项目后,重建它。现在可以了。构建/调试项目的正确方法是什么?如何清理缓存?

感谢你的帮助。

4

3 回答 3

7

该方法GridView1_SelectedIndexChanged需要在包含 的页面上定义,GridView1并确保您至少将其声明为protected

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
   //do magic
}
于 2012-05-10T15:37:14.523 回答
1

你有定义背后的代码吗?你确定它正在被使用?在你的 aspx 页面的顶部,你应该有一个看起来像这样的页面指令:

<%@ Page Language="C#" AutoEventWireup="True" Inherits="The Class Name in index.aspx.cs" Codebehind="index.aspx.cs" %>

一旦你设置好你的代码,并且你确定它正在被使用,你需要为在你的 GridView 上触发的SelectedIndexChanged事件创建一个事件处理程序。

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
    Response.Write("GridView1_SelectedIndexChanged");
}
于 2012-05-10T15:57:13.000 回答
0

在 aspx 页面上,您定义当特定事件发生时要调用的事件处理程序,以及您实际实现该方法的 cs 文件。

就像您的情况一样:在 aspx 页面中,您定义SelectedIndexChanged事件触发时GridView1_SelectedIndexChanged要调用的事件处理程序,并在 cs 文件中提供实现。

于 2012-05-10T15:09:40.650 回答