无法通过codebehind在usercontrol上访问GridView事件

IpInterfaceUC UserControl

IP服务页面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。

谢谢你的解释。

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

 

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

在userControl中声明eventhandler

  public event EventHandler 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页面

   

在aspx代码后面处理事件

  protected void OnRaiseSelectedIndexChanged(object sender, EventArgs e) { //handle your event and put logic } 

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