iT邦幫忙

1

在asp.net 廻圈中執行圖表顯示(網頁中),只在最後一筆才能正常顯示

  • 分享至 

  • xImage

1.之前有excel顯示圖形問題,巳解決( 加入 DoEvents 讓他有時間畫圖)
2.如果在asp.net 廻圈中執行圖表顯示(網頁中),只在最後一筆才能正常顯示,但在程式碼中無法加入DoEvents,在win form中可以加入(巳爬文),但在網頁中不可以加入,不知是否有解?,謝謝!
3.影片如下:
https://drive.google.com/file/d/1zmH4pHZEyNV7hMyMUgobi1wVc0XlxGz4/view?usp=share_link

錯誤訊息如下:
https://ithelp.ithome.com.tw/upload/images/20230212/20156273thuqGurTuE.jpg

4.程式碼如下:

Protected Sub Button160_Click(sender As Object, e As EventArgs) Handles Button160.Click

        Session("charname") = ""

        For lobj_dgi As Integer = 0 To topno1.Text - 1  'GridViewone.Rows.Count

            Session("charname") = GridViewone.Rows(lobj_dgi).Cells(1).Text


            SqlDataSource1.SelectCommand = "SELECT          標準差資訊2.自動編號, 標準差資訊2.名稱, 標準差資訊2.代號, basicinfo.成交價 as 成交價, basicinfo.總量 as 總量, 
                            標準差資訊2.五十日均價 as 均價, 標準差資訊2.均價STD, 標準差資訊2.均價上限 as 均價上限, 標準差資訊2.均價下限 as 均價下限, 
                            標準差資訊2.五十日均量, 標準差資訊2.均量STD, 標準差資訊2.均量上限, 標準差資訊2.均量下限, 
                            標準差資訊2.日期, ROW_NUMBER() OVER (ORDER BY 標準差資訊2.日期) AS X軸
FROM              標準差資訊2 INNER JOIN
                            basicinfo ON 標準差資訊2.代號 = basicinfo.代號 AND 標準差資訊2.日期 = basicinfo.日期
WHERE          (標準差資訊2.日期 >=  " & 起日.Text & ") AND (標準差資訊2.名稱 = N'" & Session("charname") & "')
order by X軸 asc"

            chart1.Series("Series1").XValueMember = "X軸"
            chart1.Series("Series1").YValueMembers = "成交價"
            chart1.Series("Series2").XValueMember = "X軸"
            chart1.Series("Series2").YValueMembers = "均價"
            chart1.Series("Series3").XValueMember = "X軸"
            chart1.Series("Series3").YValueMembers = "均價上限"
            chart1.Series("Series4").XValueMember = "X軸"
            chart1.Series("Series4").YValueMembers = "均價下限"

            System.Threading.Thread.Sleep(5000)

            Call 表格資料2()
            If 不顯示.Checked = True Then
                chart1.Series("Series1").IsValueShownAsLabel = True
                chart1.Series("Series2").IsValueShownAsLabel = True
                chart1.Series("Series3").IsValueShownAsLabel = True
                chart1.Series("Series4").IsValueShownAsLabel = True
            Else
                chart1.Series("Series1").IsValueShownAsLabel = False
                chart1.Series("Series2").IsValueShownAsLabel = False
                chart1.Series("Series3").IsValueShownAsLabel = False
                chart1.Series("Series4").IsValueShownAsLabel = False
            End If
            chart1.Titles("Title1").Text = GridView3.Rows(1).Cells(1).Text & "(成交價 標準差1.5倍)"
            System.Threading.Thread.Sleep(2000)
            'chart1.Height = 1500
            MaintainScrollPositionOnPostBack = "false"
            movetextbox.Focus()

            'DoEvents() 無法執行           
            'DoEvents 無法執行 

        Next
        Response.Write("巳完成")

    End Sub

    
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

2
JamesDoge
iT邦高手 1 級 ‧ 2023-02-13 07:56:48

因為在 VB.NET 中,DoEvents 方法不是 HttpApplicationState 類的成員。
DoEvents 方法是 Application 類的成員,用於強制將事件立即執行,而不是排定在下一次進入消息循環時執行。

如果您需要使用 DoEvents 方法,您可以將它改為下面的程式碼:

        'DoEvents() 無法執行           
        'DoEvents 無法執行 
        System.Windows.Forms.Application.DoEvents()
zen2965 iT邦新手 5 級 ‧ 2023-02-13 13:31:28 檢舉

這個也是會有錯誤訊息:forms 不是 system.windows 的成員
我這個問題不是關於windows form類問題,目前是要在web網頁中執行,所以應該是有關http類,但我找不到正確的寫法

player iT邦大師 1 級 ‧ 2023-02-14 10:48:32 檢舉

觀念問題?
補充
DoEvents 是VB6或VB.NET的視窗應用程式在用的
ASP.NET WebFom 並不是視窗訊息架構
所以不會有視窗訊息被卡到,得用 DoEvents 去避免視窗回應卡死的問題
基本上在ASP.NET WebFom 的程式裡
控制項的事件只要符合觸發事件的條件,就一定會被執行到
只是時間早晚
只要網頁沒TimeOut的話

zen2965 iT邦新手 5 級 ‧ 2023-02-14 12:28:19 檢舉

目前廻圈內的程式都有執行到,但圖形在最後一筆才看得到更新(無論是執行5筆或10筆都一樣),其他筆雖然有執行但在畫面上並不會出現(目前的重點就是要看到每張圖形),執行也都有完成沒有TimeOut的問題

我要發表回答

立即登入回答