Не удается получить доступ к событию GridView в пользовательском управлении с помощью кода программной части

Контроль пользователя IpInterfaceUC

<div id="dvChannel" runat="server">
        <asp:GridView ID="gvChannelUC" 
            OnRowCommand="gvChannelUC_RowCommand"
            OnSelectedIndexChanged="gvChannel_SelectedIndexChanged"
        />
</div>

CodeBehind на странице IPServices

if (!IsPostBack){
}else
{    
 string str_btn = Request.Form.Keys[Request.Form.Keys.Count - 1].ToString();
 handleClick(str_btn);
}

Вопрос

Он всегда показывает, что str_btn имеет значение null. Если я нажму кнопку, он покажет идентификатор кнопки. Но когда я нажму «Выбрать» в GridView, он покажет, что str_btn равен нулю. Это должно быть показывать идентификатор GridView, когда мы нажимаем кнопку "Выбрать".

Спасибо за любое объяснение.


person Brian    schedule 07.01.2013    source источник
comment
Насколько я понимаю, вам нужна обработка событий сетки (.ascx) на странице/codebehind (.aspx).   -  person Paritosh    schedule 07.01.2013


Ответы (2)


Попробуйте указать атрибут name для вашего gridview, т.е. name="yourGridName".

<div id="dvChannel" runat="server" name="yourGridName">
        <asp:GridView ID="gvChannelUC" name="yourGridName"
            OnRowCommand="gvChannelUC_RowCommand"
            OnSelectedIndexChanged="gvChannel_SelectedIndexChanged"
        />
</div>
person sajanyamaha    schedule 07.01.2013
comment
У тебя есть какое-нибудь решение, брат? Спасибо. - person Brian; 08.01.2013

Насколько я понимаю, вам нужна обработка событий сетки (.ascx) на странице/codebehind (.aspx).

объявить обработчик событий в userControl

 public event EventHandler<EventArgs>  RaiseSelectedIndexChanged=delegate {};

обрабатывать событие userControl selectedindexchanged в userControl.cs

   protected void gvChannel_SelectedIndexChanged(object sender, EventArgs e)
    {
        var raiseSelectedIndexChanged = RaiseSelectedIndexChanged ;
        if(raiseSelectedIndexChanged!=null)
        {
            raiseSelectedIndexChanged(sender, e);
        }
    }

зарегистрируйтесь и используйте свой userControl в aspx (что, я надеюсь, вы уже сделали), этот код будет идти на странице aspx

        <uc:userControl OnRaiseSelectedIndexChanged="OnRaiseSelectedIndexChanged"/>

обрабатывать событие в коде aspx позади

    protected void OnRaiseSelectedIndexChanged(object sender, EventArgs e)
    {
       //handle your event and put logic 
    }

Я надеюсь, что я ясно, дайте мне знать, если это смущает вас.

person Paritosh    schedule 07.01.2013
comment
Спасибо за ваш ответ;). У меня есть вопрос. Надеюсь, вы поможете мне разобраться в нем. Спасибо. ** var raiseSelectedIndexChanged = RaiseSelectedIndexChanged **. это не будет работать в отделенном коде.;) - person Brian; 07.01.2013
comment
Я не понял вас, скажите, что не работает, или опубликуйте свой пример кода, чтобы я мог его изменить. - person Paritosh; 07.01.2013
comment
var raiseSelectedIndexChanged = RaiseSelectedIndexChanged; Это не сработало - person Brian; 07.01.2013
comment
выдает ошибку компиляции? Я использую .net 4.0, поэтому var разрешен. попробуйте этот EventHandler‹EventArgs› поднятьSelectedIndexChanged = RaiseSelectedIndexChanged ; - person Paritosh; 07.01.2013
comment
Он работает нормально. Но я использовал событие при динамическом управлении. Поэтому я не могу использовать ‹uc:userControl OnRaiseSelectedIndexChanged=OnRaiseSelectedIndexChanged/›. stackoverflow.com /вопросы/14150848/. У вас есть какое-нибудь решение? Спасибо. - person Brian; 07.01.2013
comment
ctrIpInterfaceUC.RaiseSelectedIndexChanged += новый обработчик событий‹EventArgs›(OnRaiseSelectedIndexChanged); - person Brian; 08.01.2013
comment
Мой сценарий состоит в том, что у меня есть 2 пользовательских элемента управления. Таким образом, в индивидуальном пользовательском контроле я регистрирую для него функцию OnRaiseSelectedIndexChanged. Но он не запускал эту функцию (я отлаживаю VS2008) - person Brian; 08.01.2013
comment
У тебя есть какое-нибудь решение, брат? Я могу поделиться идентификатором teamviewer за твою помощь. Спасибо. - person Brian; 08.01.2013
comment
пожалуйста, пришлите вам код на [email protected], я посмотрю, что я могу сделать, чтобы помочь вам выполнить вашу задачу, я буду доступен после 22:00 - person Paritosh; 08.01.2013
comment
давайте продолжим это обсуждение в чате - person Brian; 08.01.2013