Я создал проект локально, и это нормально.
У меня есть элемент управления с именем TestUserControl.ascx.Я перетащил элемент управления GridView на пользовательский элемент управления в режиме конструктора и назвал его «grdControlsGrid».
Это сгенерировало приведенную ниже разметку.
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TestUserControl.ascx.cs" Inherits="TestASPNet.TestUserControl" %>
<asp:GridView ID="grdControlsGrid" runat="server">
</asp:GridView>
Затем я добавил событие OnRowDataBound, набрав «OnRowDataBound = "для hmtl после runat =" сервер ".Когда вы нажимаете «равно», это дает вам возможность создать метод для этого события.Дважды щелкните параметр «Создать метод», и это соединит событие с методом для вас.
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TestUserControl.ascx.cs" Inherits="TestASPNet.TestUserControl" %>
<asp:GridView ID="grdControlsGrid" runat="server" OnRowDataBound="grdControlsGrid_OnRowDataBound">
</asp:GridView>
Этот код теперь находится в вашем пользовательском элементе управления в соответствии с кодом ниже.
В качестве альтернативы вы можете подключить событие самостоятельно в загрузке пользовательских элементов управления.
public partial class TestUserControl : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
//Manually Add event handler
grdControlsGrid.RowDataBound += GrdControlsGrid_RowDataBound;
}
private void GrdControlsGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
//Manually bound event
}
protected void grdControlsGrid_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
//Auto wired event
}
}
по какой-то причине, когда при автоматическом подключении через разметку вы получаете событие "OnRowDataBound" .. но когда это делается в коде позади, вы вручнуюполучить "RowDataBound".Я думаю, что они одни и те же ... но, может быть, кто-то еще может пролить свет на это.
Надеюсь, что помогает.