无法通过代码隐藏在用户控件中访问 GridView 事件

Can#39;t access GridView event at usercontrol by codebehind(无法通过代码隐藏在用户控件中访问 GridView 事件)

本文介绍了无法通过代码隐藏在用户控件中访问 GridView 事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

IpInterfaceUC UserControl

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

IPServices page CodeBehind

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

Question

It always show str_btn is null.If I click Button,It'll show button's id.But when I click Select at GridView,It show str_btn is null.It should be show GridView's id when we click select.

Thanks for any explain.

解决方案

As per my understanding you need grid event handing (.ascx) on page/codebehind (.aspx).

declare eventhandler in userControl

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

handle userControl selectedindexchanged event in userControl.cs

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

register and use your userControl in aspx (which I hope you already did) this code will go in aspx page

        <uc:userControl OnRaiseSelectedIndexChanged="OnRaiseSelectedIndexChanged"/>

handle the event in aspx code behind

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

I hope i make it clear , let me know if it confuses you.

这篇关于无法通过代码隐藏在用户控件中访问 GridView 事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:无法通过代码隐藏在用户控件中访问 GridView 事件

基础教程推荐