我有简单的用户控件,包括ajax控件 - CalendarExtender。这是代码:
<%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"
Namespace="System.Web.UI" TagPrefix="asp" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit"
TagPrefix="cc1"
%><br />
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="TextBox2" runat="server" AutoPostBack="true"></asp:TextBox>
<cc1:CalendarExtender ID="CalendarExtender1" runat="server" Format="yyyy-MM-dd"
TargetControlID="TextBox2">
</cc1:CalendarExtender><br /><br />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
在此控件的Page_Load事件中,我有代码 - 只显示日历上的标签日期:
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = TextBox2.Text;
}
首先,我尝试在我的网络表单的Page_Load事件中动态创建此控件:
protected void Page_Load(object sender, EventArgs e)
{
Controls_MySimpleControl datap = LoadControl("~/Controls/MySimpleControl.ascx") as
Controls_MySimpleControl;
Panel1.Controls.Add(datap);
}
以上代码不起作用(添加了用户控件并且页面有效,但选择日历中的日期不会出现在标签中)。但是当我将上面的代码置于Page_Init事件中时,一切正常。你能解释一下,为什么它在Page_Init中起作用,并且在Page_Load中不起作用。也许,我应该以不同的方式动态创建控件?
答案 0 :(得分:0)
每页只需要一个scriptmanager。你的控件有自己的脚本管理器,用于控制混淆的每个用户控件实例。