在用户控件由codebehind无法访问GridView控件事件 [英] Can't access GridView event at usercontrol by codebehind
问题描述
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.If我点击按钮,就会显示按钮的id.But当我点击GridView的在选择,它显示的 str_btn 为空。应该显示GridView控件的ID,当我们单击选择。
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.
感谢您的任何解释。
推荐答案
按我的理解,你需要电网事件处理(的.ascx)页/ codebehind(的.aspx)。
As per my understanding you need grid event handing (.ascx) on page/codebehind (.aspx).
在用户控件声明事件处理程序
declare eventhandler in userControl
public event EventHandler<EventArgs> RaiseSelectedIndexChanged=delegate {};
在userControl.cs手柄用户控件SelectedIndexChanged事件
handle userControl selectedindexchanged event in userControl.cs
protected void gvChannel_SelectedIndexChanged(object sender, EventArgs e)
{
var raiseSelectedIndexChanged = RaiseSelectedIndexChanged ;
if(raiseSelectedIndexChanged!=null)
{
raiseSelectedIndexChanged(sender, e);
}
}
注册和ASPX使用您的用户控件(我希望你已经做了)这code会在aspx页面
register and use your userControl in aspx (which I hope you already did) this code will go in aspx page
<uc:userControl OnRaiseSelectedIndexChanged="OnRaiseSelectedIndexChanged"/>
处理ASPX code事件背后
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.
这篇关于在用户控件由codebehind无法访问GridView控件事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!