0

私が達成する必要があるのは、5 秒ごとにラベルを更新することです。そのために、UpdatePanel コントロールを使用しています。マークアップは次のとおりです。

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
                        <ContentTemplate>
                            <asp:Label ID="NewsFeed_Item1_Name" runat="server" Text=""></asp:Label>
                        </ContentTemplate>
                    </asp:UpdatePanel>

サーバー側:

protected void Page_Load(object sender, EventArgs e)
{
    // Create a timer
    myTimer = new System.Timers.Timer();
    // Tell the timer what top do when it elapses
    myTimer.Elapsed += new ElapsedEventHandler(UpdateNewsFeed);
    // Set it to go off every five seconds
    myTimer.Interval = 5000;
    // And start it        
    myTimer.Enabled = true;
}

private void UpdateNewsFeed(object sender, ElapsedEventArgs e)
{
    //newsfeedCounter and dt are global variables
    if (newsfeedCounter >= dt.Rows.Count)
        newsfeedCounter = 0;
    string name = dt.Rows[newsfeedCounter]["Name"].ToString();
    NewsFeed_Item1_Name.Text = name;
    newsfeedCounter++;
}

しかし、どういうわけか、5 秒ごとに UpdateNewsFeed 関数がトリガーされません。

上記のコードの何が問題になっていますか?

4

4 に答える 4

1

これがあなたの問題の実用的な解決策です。Page_Load()メソッド に次のコード行を追加するだけです。

//add timer to the webform so we can get the ControlID
this.Form.Controls.Add(myTimer);

//An AJAX control to update the web UI
AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();

//set timer to async it
trigger.ControlID = myTimer.UniqueID;
trigger.EventName = "Tick";     

//now add the timer trigger to get its updates   
UpdatePanel1.Triggers.Add(trigger);
于 2013-10-05T20:25:18.473 に答える
0

次の 1 行のコードを追加するだけです。

myTimer.Start();

有効にした後。

アップデート

なぜあなたはtimer_tick()イベントを使わないのですか?あなたはここにいくつかのサンプルを持っています、それはあなたを助けることができます

于 2013-10-05T20:20:17.250 に答える