GridView OnRowCreated未被激发-已将VB项目转换为C#

本文关键字:项目 VB 转换 已将 OnRowCreated GridView | 更新日期: 2023-09-27 18:22:02

如果这看起来有点冗长,我现在道歉。

我的任务是将一个可工作的VB.Net解决方案重写为C#。原因是合理的,但我不想在这里详述。

我已经完成了重写,但不出所料,我现在遇到了一些障碍。main 1是一个特定的GridView用户控件(ascx)。这个特定的控件是从另一个项目(类库)创建的,该项目创建了一个名为EnhancedGridView的网格视图控件,该控件具有增强的分页等功能,如下所示:

namespace EnhancedGridView
{
    public class GridView : System.Web.UI.WebControls.GridView
    {
        //stuff
    }
}

这背后的原因是有一个通用的gridview控件,然后可以由其他gridview用户控件使用和定制。EnhancedGridView dll在我的ascx控件中注册如下:

<%@ Register Assembly="EnhancedGridView" Namespace="EnhancedGridView" TagPrefix="cc1" %>

问题在于vb版本在ascx控件中呈现了EnhancedGridview控件。RowCreated事件在EnhancedGridview控件中激发,然后在ascx中激发单独的RowCreated活动(与RowDataBound相同)。然而,在我的C#版本中,尽管使用OnRowCreated等在控件中注册了ascx事件,但只有EnhancedGridview事件才会被激发。下面是一些代码来说明我的问题:

ascx VB控件OnRowCreated事件(激发,在EnhancedGridView OnRowCreateed之后):

Protected Sub GridView1_RowCreated(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated
'Do stuff
End Sub

ascx C#控制OnRowCreated事件(虽然EnhancedGridView OnRowCreateed触发,但不会触发)

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
    //Do stuff
}

在C#版本中,我已使用OnRowCreated="GridView1_RowCreated"将此事件注册到GridView1.RowCreated事件中。然而,它仍然没有开火(与其他事件一起)。我试着把GridView变成一个普通的GridView(不使用EnhancedGridView),RowCreated事件(和其他事件)被触发,所以我知道这与EnhancedGrid视图有关,以及它如何与我的ascx控件链接。

有人能帮我指明正确的方向吗?

更新

我做了一些进一步的调试,似乎只有RowCreated事件不起作用。以前它也是RowDataBound。然而,我已经做了一些更改,并假设(我知道这是个坏主意)它仍然会影响这两个事件。然而,在进一步测试时,RowDataBound事件现在被触发了。这似乎仍然与EnhancedGridView有关,因为它没有RowDataBound事件,但它确实有一个RowCreated事件,该事件被调用(而ascx RowCreated活动没有被调用)。

GridView OnRowCreated未被激发-已将VB项目转换为C#

根据MSDN在备注中的说法,我需要确保我调用了基类的OnRowCreated方法,以确保注册的委托收到事件。所以我简单地添加了"base.OnRowCreated(e);"EnhancedGridView OnRowCreated方法。