动态创建ajax用户控件不起作用

时间:2011-01-27 19:31:01

标签: asp.net visual-studio-2005 asp.net-ajax

我有简单的用户控件,包括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中不起作用。也许,我应该以不同的方式动态创建控件?

1 个答案:

答案 0 :(得分:0)

每页只需要一个scriptmanager。你的控件有自己的脚本管理器,用于控制混淆的每个用户控件实例。