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

IpInterfaceUC UserControl

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

Страница IPServices CodeBehind

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, когда мы нажимаем кнопку выбора.

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

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>

Насколько я понимаю, вам нужно передать событие сетки (.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 
    }

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

Другие вопросы по тегам