0

IpInterfaceUC 用户控制

<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。如果我单击Button,它将显示按钮的id。但是当我在GridView单击Select时,它显示str_btn为null。当我们单击select时应该显示GridView的id。

感谢您的任何解释。

4

2 回答 2

0

尝试name为您的 gridview 赋予属性,即name="yourGridName".

<div id="dvChannel" runat="server" name="yourGridName">
        <asp:GridView ID="gvChannelUC" name="yourGridName"
            OnRowCommand="gvChannelUC_RowCommand"
            OnSelectedIndexChanged="gvChannel_SelectedIndexChanged"
        />
</div>
于 2013-01-07T04:37:08.583 回答
0

据我了解,您需要在页面/代码隐藏(.aspx)上处理网格事件(.ascx)。

在 userControl 中声明事件处理程序

 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 
    }

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

于 2013-01-07T05:12:40.323 回答