在UpdatePanel中具有相同ID问题的asp.net多重控制

时间:2013-11-21 06:29:18

标签: c# asp.net ajax jquery updatepanel

我正在按照以下代码执行

<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'的多个控件.ViewControl要求控件具有唯一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 });
                }
            }
        }
    }

Ctrl将为null

0 个答案:

没有答案