不能通过代码隐藏访问usercontrol中的GridView事件

本文关键字:usercontrol 中的 GridView 事件 访问 隐藏 代码 不能 | 更新日期: 2023-09-27 17:51:00

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);
}

总是显示str_btn为空。如果我点击Button,它会显示Button的id。但是当我在GridView中单击Select时,它显示str_btn为空。它应该显示GridView的id当我们点击select

谢谢你的解释

不能通过代码隐藏访问usercontrol中的GridView事件

尝试将name属性赋予gridview,即name="yourGridName"

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

根据我的理解,您需要在page/codebehind (.aspx)上网格事件处理(.ascx)。

在userControl中声明eventandler

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

处理userControl.cs中的userControl selectedindexchanged事件

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

在aspx中注册并使用你的userControl(我希望你已经这样做了),这段代码将进入aspx页面

        <uc:userControl OnRaiseSelectedIndexChanged="OnRaiseSelectedIndexChanged"/>

后面的aspx代码中处理事件
    protected void OnRaiseSelectedIndexChanged(object sender, EventArgs e)
    {
       //handle your event and put logic 
    }

我希望我说得很清楚,如果让你感到困惑,请告诉我。