0

マスターページにスクリプトマネージャーがあります:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptLocalization ="true" EnableScriptGlobalization ="true" EnablePartialRendering="true" >
</asp:ScriptManager>

MyPage.aspx (マスター ページの contentplaceholder に配置)

<asp:UpdatePanel ID="upMain" runat="server" UpdateMode="Conditional" EnableViewState="true">
  <Triggers>
    <asp:AsyncPostBackTrigger ControlID="btnRefresh" EventName="Click" />
  </Triggers>
    <ContentTemplate>
        <asp:PlaceHolder ID="placeHolder1" runat="server" EnableViewState="true"></asp:PlaceHolder>
            </ContentTemplate>
</asp:UpdatePanel>

MyPage.aspx スクリプト:

    $(document).ready(function () {
        setInterval(myfun, 20000);
    });

    function myfun() {
        var btn = document.getElementById('<%=btnRefresh.ClientID%>');
                    btn.click();
    }

プレース ホルダーには、ユーザー コントロールを含む動的に作成されたテーブルを配置しています。ページの読み込み時に、ページにユーザー コントロールが表示されます。しかし、20 秒後に非同期ポストバックが呼び出されると、ユーザー コントロールが表示されません。firebug を使用すると、ユーザー コントロールが存在することがわかります。しかし、それらはレンダリングされません。非同期ポストバックで再度作成していますが。それらは空に見えます。ヘルプ。

4

1 に答える 1

1

このコードを試してください。すべてのページのポストバックでコントロールを作成する必要があります。

protected void Page_Load(object sender, EventArgs e) 
{ 
     if (!Page.IsPostBack) 
      { 
           GetData(); // get data from database 
      } 
           LoadUserControls(); // Create dynamic table containing user controls 

} 

これを読むべきだと思います。UpdatePanel で UserControl を動的にロードする

于 2012-10-17T12:43:05.133 に答える