2011-08-02 13 views
1

私は動的なdata.userコントロールを含むユーザーコントロールを持つWebページの一部を更新するプロジェクトで作業しています。ユーザーコントロールはテキストファイルからデータを読み込みますこのテキストファイルは頻繁に更新されます。私はユーザーコントロールだけではなく、全体のページをJavaScriptを使用して更新する必要があります。私は以下を試みたが、それは私のために働いていなかった。javascriptから更新パネル内のユーザーコントロールを更新する

<%@ Page Language="C#" %> 

<%@ Register src="ucTest.ascx" tagname="ucTest" tagprefix="uc1" %> 

<script runat="server"> 

    void button_Click(object sender, EventArgs e) 
    { 
     lbltest.Text = "Refreshed by server side event handler at " + DateTime.Now + ".<br>"; 
    } 

</script> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>How to update an UpdatePanel with JavaScript</title> 

    <script type="text/javascript"> 
    function UpdPanelUpdate() 
    { 
     __doPostBack("<%= button.ClientID %>",""); 
    } 
    </script> 

</head> 
<body> 
    <form id="form1" runat="server"> 
     <asp:ScriptManager ID="ScriptManager1" runat="server" /> 
     <div> 


    <a href="javascript:UpdPanelUpdate()">Update the Panel</a> 

     <asp:Button ID="button" runat="server" OnClick="button_Click" style="display:none;"/> 

      <asp:UpdatePanel runat="server" ID="UpdatePanel1" UpdateMode="Conditional"> 
        <ContentTemplate> 
         <uc1:ucTest ID="ucTest1" runat="server" /> 
         <asp:Label ID="lbltest" runat="server"></asp:Label> 
        </ContentTemplate> 
        <Triggers> 
        <asp:AsyncPostBackTrigger ControlID="button" EventName="Click" /> 
        </Triggers> 
      </asp:UpdatePanel> 
     </div> 
    </form> 
</body> 
</html> 

私のユーザーコントロールはです。

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ucTest.ascx.cs" Inherits="ucTest" %> 
<table border="3"> 
     <tr> 
      <td> 
        <% Response.WriteFile("TextFile.txt"); %> 
      </td> 
     </tr> 
</table> 

ここでTextFile.txは頻繁に変更される情報です。

ご協力いただければ幸いです。

答えて

2

物事を簡単にするために、非同期トリガーを配置する必要がないように、UpdatePanel内に隠れたボタンを配置することができます。まず、ボタンを表示したままにして、更新パネルがリフレッシュされているかどうかを確認します。はいの場合、ボタンを非表示にすることができます。

クリックイベントをシミュレートすることによって、次の部分がボタンをトリガーします。私は、クロスブラウザソリューションからjqueryのようなライブラリを使うことをお勧めします。例えば、

function UpdPanelUpdate() 
{ 
    $("<%= button.ClientID %>").click(); 
} 

動作するコード__doPostBack("<%= button.ClientID %>","");について、あなたは偽として、ボタンのUseSubmitBehaviorプロパティを設定してみる必要があります。

関連する問題