IpInterfaceUC UserControl
<div id="dvChannel" runat="server">
<asp:GridView ID="gvChannelUC"
OnRowCommand="gvChannelUC_RowCommand"
OnSelectedIndexChanged="gvChannel_SelectedIndexChanged"
/>
</div>
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。当我们点击选择时,应该显示GridView的id。
感谢您的解释。
答案 0 :(得分:0)
尝试为您的gridview提供name
属性,即name="yourGridName"
。
<div id="dvChannel" runat="server" name="yourGridName">
<asp:GridView ID="gvChannelUC" name="yourGridName"
OnRowCommand="gvChannelUC_RowCommand"
OnSelectedIndexChanged="gvChannel_SelectedIndexChanged"
/>
</div>
答案 1 :(得分:0)
根据我的理解,你需要在页面/代码隐藏(.aspx)上进行网格事件处理(.ascx)。
在userControl中声明eventhandler
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
}
我希望我说清楚,让我知道它是否会让你感到困惑。