Как обрабатывать события просмотра пользовательской сетки? - PullRequest
0 голосов
/ 01 июня 2018

У меня есть пользовательский элемент управления в виде сетки.Я добавляю его динамически ... Я создал метод для источника данных, но я не могу использовать другие события вида сетки, такие как "Row_Data_Bound" и т. Д.

Я видел кодв сети, которая говорит создать делегатов и добавить следующее

protected void Simple_DGV_RowDataBound(object sender, GridViewRowEventArgs e)   
{
OnRowDataBound(e);
}

, но я получаю ошибку здесь, говоря: Имя OnRowDataBound не существует в текущем контексте

Может кто-нибудь помочьменя с доступом к событиям вида сетки пользовательского управления на родительской странице

РЕДАКТИРОВАТЬ:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UserControl1.ascx.cs" Inherits="ProjectManagement.UserControl.User1" %>
<div>
<asp:GridView ID="ucGridView" runat="server" SkinID="gvSchedulerSkin" AllowSorting="false" OnRowDataBound="ucGridView_RowDataBound">
   <RowStyle Width="20px" /> 
</asp:GridView>
</div>

это моя страница ascx ... я хочу использовать этот вид сетки в более чемодно место (во время выполнения), поэтому я создал пользовательский элемент управления ... По сути, я хочу вызвать этот пользовательский элемент управления из моего кода, а затем, используя привязку к его строке, хочу связать данные с gridview ..

я видел на веб-сайтах, что там написано использование событий "пузыри" ... но я не знаю, как это реализовать.

, так что вы можете помочь в этом вопросе ... так что я могу нормально использовать rowdatabound, как и я

Спасибо заранее

1 Ответ

0 голосов
/ 04 июня 2018

Я создал проект локально, и это нормально.

У меня есть элемент управления с именем 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".Я думаю, что они одни и те же ... но, может быть, кто-то еще может пролить свет на это.

Надеюсь, что помогает.

...