2011-01-27 12 views
0

私は、include ajaxコントロール - CalendarExtenderを使用して簡単なユーザーコントロールを持っています。このコントロールのPage_Loadイベントで動的にajaxを作成するユーザーコントロールが動作しない

<%@ 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> 

私は、コードを持っている - ちょうどカレンダーからラベル日に示します:これはコードです

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イベントのコード場所を上回ると、すべてがOKです。なぜPage_Initで動作し、Page_Loadでは動作しないのか説明できますか?たぶん、別の方法でコントロールを動的に作成する必要がありますか?

+0

私はこれに関する具体的な答えはありませんが、私は最近、ページにコントロールを動的に追加しようとする試みは、viewstateの悪夢であることを伝えることができます。私は、ビューステートと可視性を動的に追加したり削除したりするのではなく、ページにすべてのコントロールを「プリロード」させることになりました。動的ローディングは要件ですか? – jbehren

答えて

0

ページごとに1つのスクリプトマネージャが必要です。あなたのコントロールには、ajaxを混乱させるユーザーコントロールのインスタンスごとに独自のスクリプトマネージャがあります。

関連する問題