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

2023-09-07 15:34:19 作者:哥总是默默围观

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);
}
Asp.net 中使用GridView控件实现Checkbox单选

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.