在 DataBind、Init、Load、PreRender 或 Unload 阶段无法修改控件集合

Boa*_*ace 5 c# asp.net custom-controls

好吧,我正在构建一个自定义控件,它会生成许多日历(日历是自定义的,不属于任何库的一部分),当单击日历上的日期时,它会在面板中填充一种日程安排器。现在,到目前为止一切都有效。单击日程安排中的一个小时时,会出现我遇到的问题。将弹出一个 div 形式的窗口,该窗口创建一个带有取消和提交按钮的表单。单击这些按钮中的任何一个时,都会触发自定义事件,该事件将重新初始化日程计划程序。我已经为日程安排器创建了一个自定义事件,但我不断收到错误

“在 DataBind、Init、Load、PreRender 或 Unload 阶段无法修改控件集合。”

以下为参考来源。

私人DayView CreateDayPanner(控制容器,DateTime日期,int dayNum){container.Controls.Clear();

        var dv = new DayView(date.Date.AddDays(dayNum))
        {
            Identifier = dayNum,
            LogoPath = "../imgs/dialogueLogo.png",
            fieldClasses = "eDialogue_cls",
            InnerDCls = "innerD_cls",
            FsCCls = "fsContainer_cls",
            LegCCls = "legContainer_cls"
        };
        dv.Submitted += Dv_Submitted;
        dv.Canceled += Dv_Canceled;**
        return dv;
    }
Run Code Online (Sandbox Code Playgroud)

DayView 类型具有以下委托和处理程序:

    public delegate void CancelEventHandler(object source, DayViewEventArgs args);

    public delegate void SubmitEventHandler(object source, DayViewEventArgs args);

    public event CancelEventHandler Canceled;
    public event SubmitEventHandler Submitted;


    public void RaisePostBackEvent(string eventArgument)
    {
        OnSubmitted(StartDate);
        OnCancelled(StartDate);
    }
Run Code Online (Sandbox Code Playgroud)

最后在 DayView 类型上触发事件,如下所示:

取消按钮:cancel.Attributes.Add(HtmlTextWriterAttribute.Href.ToString(), csm.GetPostBackClientHyperlink(this, StartDate.ToShortDateString()));

提交按钮:

        submit.Attributes.Add(HtmlTextWriterAttribute.Href.ToString(), csm.GetPostBackClientHyperlink(this, StartDate.ToShortDateString()));
Run Code Online (Sandbox Code Playgroud)

我不知道是什么导致了这个错误。任何建议将不胜感激。