不能通过代码隐藏访问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
谢谢你的解释
尝试将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
}
我希望我说得很清楚,如果让你感到困惑,请告诉我。