2012-04-02 9 views
3

これで検索はいくつか行っていますが、探しているものが見つからないようです。私はかなりASP.NETに新しいですが、C#にはありません。私は、Webベースの会計ソフトウェアサービスからのデータでWebストアを更新するために、通常のWebサービス要求を処理するためのページを作成しなければなりませんでした。私が持っている問題は、ページを最初にロードしてからアップデートを実行する必要があり、それ以外の場合はページがタイムアウトしてアップデートが失敗するということです。表示ページにはラベルがいくつかあります。ページが頻繁に更新されて更新が実行されるので、表示ページには必要なものだけです。しかし、結果を画面に表示できるようにするには、更新メソッドが必要です。私は、アップデートが実行されるのに問題はなく、結果が表示されていることを確認するだけです。私は押されたボタンがなく、使用されるフォームはありません。ここでタスクの完了時にASP.NETラベルを更新する

は私のページのコードです:

<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="MainContent"> 
<div class="pageHeader"> 
    <div class="caption"> 
     <h1><asp:Localize ID="Caption" runat="server" Text="Update of Order Status From NetSuite Into AbleCommerce"></asp:Localize></h1> 
    </div> 
</div> 
<div> 
     <asp:Label ID="Label0" runat="server"></asp:Label> 
     <br /><br /> 
     <asp:Label ID="Label1" runat="server"></asp:Label> 
     <br /><br /> 
     <asp:Label ID="Label2" runat="server"></asp:Label> 
     <br /><br /> 
     <asp:Label ID="Label3" runat="server"></asp:Label> 
</div> 
</asp:Content> 



そしてここでは、私の背中コードです:

public partial class Template_Default : CommerceBuilder.Web.UI.AbleCommercePage 
{ 
    private void PerformUpdate(object State) 
    { 
     Store _Store = StoreDataSource.Load(1); 
     Token.Instance.InitStoreContext(_Store); 
     String results = PontoonUpdate.soUpdate(); // method that performs the updates 
     Label3.Text = "Update Completed. " + String.Format("{0:MM-dd-yyyy hh:mm:ss}", DateTime.Now + "\n\n" + results); 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     Label0.Text = "Update start time: " + String.Format("{0:MM-dd-yyyy hh:mm:ss}", DateTime.Now); 
     Label1.Text = "Order updates will begin."; 
     Label2.Text = "Processing..."; 
     if(!Page.IsPostBack) 
      System.Threading.ThreadPool.QueueUserWorkItem(PerformUpdate); 
    } 
} 

私は何かが欠けています知っている、と私はそれが私の不足が原因であることを知っていますの経験のASP.NET。誰かがポインタを持っているなら、私は大いに感謝しています。


わかりました。私がしたいことに対する答えを見つけました。私は、UpdatePanelの中​​で、あなたのコントロールをラップ何か他のものを検索し、これを見つけた...

http://www.simple-talk.com/dotnet/asp.net/implementing-waiting-pages-in-asp.net/

+3

あなたはAJAXについて学ぶ必要があります。 ASP.NETはあなたが思うように動作しません。 –

+2

@JohnSaunders:ここでAJAXが問題だと思いますか?スレッドが完了したときにラベルを設定するコールバックメソッドが必要なようです。 –

+0

@JamesJohnson:ASP.NETのようなコールバックメソッドを使用することはできません。ページが処理を完了した後に呼び出され、もはや存在しなくなりました。彼は明らかにスレッドが完了するのを待っているページを保持したくはない:ページが完了した後、そしてスレッドが完了した後で、ブラウザの表示を更新したいと思う。 –

答えて

1

ました。それは貧しい人のAJAXです。コンテンツテンプレートにコントロール(またはそのページ全体)を配置します。次に、[Triggers]セクションで、どのコントロールを監視するのか、どのイベントを捕捉するのかを指示します。それは残りをするでしょう。あなたのケースでは、ここから、トリガーするイベントが必要です。ボタンonLoadを起動するjavascript、または他のコントロールのバインドイベントさえできます。それは本当に重要ではありません。

<asp:UpdatePanel runat="server" ID="update"> 
    <ContentTemplate> 
     <div class="pageHeader"> 
      <div class="caption"> 
       <h1><asp:Localize ID="Caption" runat="server" Text="Update of Order Status From NetSuite Into AbleCommerce"></asp:Localize></h1> 
      </div> 
     </div> 
     <div> 
       <asp:Label ID="Label0" runat="server"></asp:Label> 
       <br /><br /> 
       <asp:Label ID="Label1" runat="server"></asp:Label> 
       <br /><br /> 
       <asp:Label ID="Label2" runat="server"></asp:Label> 
       <br /><br /> 
       <asp:Label ID="Label3" runat="server"></asp:Label> 
     </div> 
    </ContentTemplate> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="generate" EventName="Click" /> 
    </Triggers> 
</asp:UpdatePanel> 
関連する問題