Я пытаюсь создать подкласс GridView, который находится в UserControl.Я хочу иметь возможность обрабатывать события на отдельной странице в результате этого.
В основном у меня есть следующий код:
Мой UserControl с GridView:
<%@ Control Language="C#" AutoEventWireup="false" CodeBehind="StdList.ascx.cs" Inherits="UCS_Web.uP.UserControls.StdList" %>
<div>
<asp:Panel ID="Panel1" runat="server">
<asp:GridView ID="_gridView" runat="server" PageSize="6"
GridLines="None" AutoGenerateColumns="False"
OnRowCommand="_gridView_RowCommand" AutoGenerateEditButton="false"
OnDataBound="_gridView_DataBound" OnPreRender="_gridView_PreRender">
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" HorizontalAlign="Left" CssClass="gridViewHdr" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
</asp:GridView>
</asp:Panel>
Страница, которая использует UserControl, будет выглядеть следующим образом:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="BypassReasonsPage.aspx.cs" Inherits="UCS_Web.uP.Tools.BypassReasonsPage" %>
<%@ Register Src="~/uP/UserControls/StdList.ascx" TagName="List" TagPrefix="uc" %>
<body>
<form id="form1" runat="server">
<div>
<uc:List ID="uc_list" runat="server" />
</div>
</form>
Это код позади:
uc_list.GridView.DataSource = this.TCW.Copy.bypassReasons;
uc_list.GridView.DataBind();
Toчтобы эта страница работала, я включаю этот файл, который задает, какие столбцы связаны с данными и т. д.быть в CodeBehind пользовательского контроля.Как я могу сделать эту работу?
Я пытался сделать их виртуальными классами и переопределить их на страницах, на которых я их использую, но это не сработало.Любые другие методы, которые могли бы сделать это?)
namespace UCS_Web.uP.UserControls
{
public class MyStdList : StdList
{
protected override void _gridView_RowCommand(object sender, GridViewCommandEventArgs e){
Response.Redirect("HERPA DERP!");
}
}
}