Εχω καποια botton control πανω στην σελιδα και αρχικοποιούνται οταν φορτωνει η σελιδα με τον εξης κώδικα:
Sub
Page_Load(ByVal Sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not Page.IsPostBack Then
SQLconn.Open()
Dim SelectCmd1 As New SqlCommand("SELECT [rawvalue] FROM [Data] WHERE (timestamp=(SELECT MAX(timestamp) FROM [Data]WHERE(name = 's1'))) AND (name='s1')", SQLconn)
SelectCmd1.CommandType = CommandType.Text
Dim result1 As Integer
Dim myDataReader1 As SqlDataReader
myDataReader1 = SelectCmd1.ExecuteReader()
myDataReader1.Read()
result1 = myDataReader1.GetInt32(0)
SQLconn.Close()
ChangeButton1(result1)
End If
End Sub
Δεν ξερω ποσο σωστος ειναι αλλα δουλευει αψογα για την περιπτωση μου.
Μετα απο αυτο πατωντας πανω στα control γραφω σε εναν πίνακα τιμες -1 και 0. Κατι το οποιο παλι γινεται σωστα.
Sub
ChangeButton1(ByVal Status As Integer)
If Status = -1 Then
Label1.Text =
"ON"
OnOff1.Style.Value =
"background-image: url(../ImgContr/1.png);"
Else
Label1.Text =
"OFF"
OnOff1.Style.Value =
"background-image: url(../ImgContr/2.png);"
End If
End Sub
Sub OnOff_Click1(ByVal Sender As Object, ByVal e As System.EventArgs)
Dim updateCMD As SqlCommand
Dim query As String
If Label1.Text = "ON" Then
query =
"UPDATE [Triggers] SET [rawvalue] = 'False' WHERE [name] = 's1'"
ChangeButton1(0)
Else
query =
"UPDATE [Triggers] SET [rawvalue] = 'True' WHERE [name] = 's1'"
ChangeButton1(-1)
End If
updateCMD =
New SqlCommand(query, SQLconn)
updateCMD.CommandType = CommandType.Text
SQLconn.Open()
updateCMD.ExecuteNonQuery()
SQLconn.Close()
End Sub
Αυτο που προσπαθησα και ακομα προσπαθω ειναι βαλω Ajax. Χρησιμοποιώντας τα Ajax Extentions που κυκλοφόρησε η Microsoft και συγκεκριμενα το Update Panel μεσα στο οποια εβαλα τα controls button και label. Γραφω στην βάση αλλα ταυτοχρονα αλλα και τα background του button και το text του label.
To θεμα ειναι ότι στον πινακα όπου γινεται η αρχικοποιηση γραφονται οι τιμες απο ενα hardware ελεγκτή. Οποτε πρεπει να κάνω refresh την σελιδα για να δω αν εισαχθησαν νεα δεδομενα. Στα documention για το AJAX ειδα οτι γινεται να διαβαζονται οι τιμες αυτες χαρη σε ενα timer control που ενεργοποιεί το onTick event των Triggers του Update Panel. Έτσι π.χ ανα 3-4 δευτερα θα γινεται polling του πινακα με τις τιμες για την αρχικοποιηση.
Αρα πρεπει να καλω την συναρτηση Page_Load που κανει την αρχικοποιήση καθε 3-4 δευτερα οταν θα ενεργοποειται το onTick. Το Page_load ειναι όμως event και εχω και το If Not Page.IsPostBack.
Αυτο σημαινει δηλαδη οτι πρέπει να έχω την Page_Load για οταν φορτωνει για πρωτη φορα η σελιδα και μια ιδια συναρτηση π.χ Refresh που θα καλείτε αν απο το OnTick?
Αν υπαρχει καποιος που καταλαβε τι λεω ας μας πει την γνωμη του?