asp.net onselectedindexchanged方法位置

时间:2012-05-10 15:06:46

标签: asp.net

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

例如,在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?)

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

感谢您的帮助。

3 个答案:

答案 0 :(得分:7)

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

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
   //do magic
}

答案 1 :(得分:1)

您是否定义了后面的代码?你确定它正在被使用吗?在aspx页面的顶部,您应该看到如下所示的page directive

<%@ 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");
}

答案 2 :(得分:0)

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

与您的情况类似:在aspx页面中,您定义当SelectedIndexChanged事件触发时,GridView1_SelectedIndexChanged要调用的事件处理程序,并在cs文件中提供强制执行。