C# UpdatePanel中存在具有相同ID的asp.net多个控件问题
我正在做下面的代码C# UpdatePanel中存在具有相同ID的asp.net多个控件问题,c#,asp.net,ajax,jquery,updatepanel,C#,Asp.net,Ajax,Jquery,Updatepanel,我正在做下面的代码 <asp:UpdatePanel runat="server" ID="upContent"> <ContentTemplate> <cube:PlaceHolder ID="phContent" runat="server"> </cube:PlaceHolder> <uc1:ProgressNote runat="serve
<asp:UpdatePanel runat="server" ID="upContent">
<ContentTemplate>
<cube:PlaceHolder ID="phContent" runat="server">
</cube:PlaceHolder>
<uc1:ProgressNote runat="server" ID="ProgressNote" />
</ContentTemplate>
</asp:UpdatePanel>
现在的问题是,当我在页面中调用ProgressNote的findcontrol时,它找不到,因为ProgressNote在面板外部,因为findcontrol重写方法在“phContent”面板中找到该控件。为此,我将ProgressNote控件放在面板内,如下所示
<asp:UpdatePanel runat="server" ID="upContent">
<ContentTemplate>
<cube:PlaceHolder ID="phContent" runat="server">
<uc1:ProgressNote runat="server" ID="ProgressNote" />
</cube:PlaceHolder>
</ContentTemplate>
</asp:UpdatePanel>
现在我有一个异常“找到了多个具有相同ID“ProgressNote”的控件。FindControl要求控件具有唯一ID”,但代码中没有相同的ID。如果我做错了,请帮我解决这个问题。提前谢谢
这就是我如何找到控制权:
protected void onControlEvent(object sender, ControlEventArgs e)
{
foreach (KeyValuePair<string, EventInfo> parent in this.RegisteredEvents[e.ControlID])
{
if (parent.Key != this.ClientID)
{
IBaseControl ctrl = (IBaseControl)this.PlaceHolder.FindControl(parent.Key);
if (parent.Value.EventName == e.EventName)
{
ctrl.ControlEvent(sender, new EventInfoEventArgs() { EventInfo = parent.Value, e = e.EventArgs });
}
}
}
}
受保护的void onControlEvent(对象发送方,ControlEventArgs e)
{
foreach(此.RegisteredEvents[e.ControlID]中的KeyValuePair父级)
{
if(parent.Key!=this.ClientID)
{
IBaseControl ctrl=(IBaseControl)this.PlaceHolder.FindControl(parent.Key);
if(parent.Value.EventName==e.EventName)
{
ctrl.ControlEvent(发送方,新的EventInfoEventArgs(){EventInfo=parent.Value,e=e.EventArgs});
}
}
}
}
Ctrl将为空您在页面上绑定了多少ProgressNote?一次!我只是像上面一样拖放控件@DevCan你可以粘贴一些代码你如何查找ProgressNote?@Dev yeh当然可以,请检查上面