Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Toggle Button για update σε Βαση

Îåêßíçóå áðü ôï ìÝëïò kallileo. Τελευταία δημοσίευση από το μέλος kallileo στις 23-04-2007, 10:32. Υπάρχουν 10 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  19-03-2007, 16:28 26684

    Toggle Button για update σε Βαση

    Θελωνα φτιαξω ενα κουμπι ON-OFF που θα αντιστρεφει(toggle) καθε φορα μια τιμη(bit) απο ενα record. Δηλαδη κατι σαν checkbox αλλα σε button.
    Οποτε θα χρειαστω ενα Label control και ενα button και να γραψω script.
    Ή μπορω θα το κάνω με template ενος control που υποστηριζει update σε βαση?
    Αν εχει καποιος καποιο παραδειγμα ή tutorial θα του ημουν ευγνωμων.
  •  19-03-2007, 16:43 26685 σε απάντηση της 26684

    Απ: Toggle Button για update σε Βαση

    Υπάρχει κάτι έτοιμο στο ajax toolkit της MS και υποστηρίζει εικονίδια.

    Το κακό είναι ότι απ ότι είδα συμπεριφέρεται λίγο περίεργα όταν είναι μέσα σε template.

    Κατά τα άλλα, μπορείς απλά να παίξει με ένα button και να κάνεις bind σε διάφορα attributes όπως το χρώμα ή το περίγραμμα την τιμή του πεδίου που θέλεις.


    Simple Photography
  •  19-03-2007, 18:49 26696 σε απάντηση της 26685

    Απ: Toggle Button για update σε Βαση

    Μαλλον για το δευτερο με ενδιαφερει...
    Απλα θελω καθε φορα που παταω το κουμπι να αλλαζει η τιμη στην βαση και ταυτοχρονα και το χρωμα του label.
    Κανα tutorial που να δειχνει που να πατησω???
  •  23-03-2007, 14:56 26925 σε απάντηση της 26696

    Απ: Toggle Button για update σε Βαση

    Εφτασα σε αυτο σημειο και κολλησα...
    Η ερωρηση ειναι αν για καθε sql command χρειαζεται και διαφορετικο connection και πως θα συνδεσω τις commands με το κουμπι?


    Sub OnOff_Click(ByVal Sender As Object, ByVal e As System.EventArgs)
    If OnOff.Text = "Press to Close" Then
    ' update field to true
    UPDATE Device1 SET rawvalue = True WHERE Device = "Channel1"
    Else
    ' update field to false
    UPDATE Device1 SET rawvalue = False WHERE Device = "Channel1"
    End If
    End Sub

    Sub Page_Load(ByVal Sender As Object, ByVal e As System.EventArgs)
    Dim status As Boolean = ' get value "SELECT [rawvalue] FROM [device1]"
    if status = True Then
    OnOff.Text = "Press to Close"
    Label1.Text = "ON"
    Label1.BackColor = Drawing.Color.Green
    Else
    OnOff.Text = "Press To Open"
    Label1.Text = "OFF"
    Label1.BackColor = Drawing.Color.Red
    End If
    End Sub





     







    Ο πινακας μου ειναι ο παρακατω:
    Device rawvalue Reading Timespamp
    Channel1 True(bit) Good xx/xx/xxxx
  •  23-03-2007, 16:19 26928 σε απάντηση της 26925

    Απ: Toggle Button για update σε Βαση

    Καταρχάς κάποιες παρατηρήσεις:
    1. Καλό είναι να φτιάχνεις stored procedures και να τρέχεις αυτές
    2. Καλό είναι το connection string να μπαίνει στο web.config και να το διαβάζεις από εκεί
    3. Το πιο κομψό θα ήταν να φτιάξεις μια class που θα κληρονομεί από το button και να έχει μια property τύπου boolean
    4. To label τι το θες;
    5. Αν πρόκειται να εμφανίζεις μόνο ένα record δεν χρειάζεσαι καν button. Αρκεί ένα checkbox με autopostback=true
    dim connectionSTR as string = "Data Source=server;Initial Catalog=dbName;User Id=UserName;Password=userPass;"

    Sub Page_Load(ByVal Sender As Object, ByVal e As System.EventArgs)
    if not page.ispostback then
      Dim query As string="SELECT [rawvalue] FROM [device1] where Device = 'Channel1'"
      Dim selectCMD As SqlCommand(query,SqlConnection(connectionSTR )
      dim result as boolean
      SQLConn.Open()
      ' διάλεξε πώς θες να πάρεις τα data σου, υπάρχουν πολλοί τρόποι
      ' result=...
      SQLConn.close()
      changeButton(result)
    End If
    End Sub

    sub changeButton(on as boolean)
    if on then
        OnOff.Text = "Press to Close"
        Label1.Text = "ON"
        Label1.BackColor = Drawing.Color.Green
    else
        OnOff.Text = "Press To Open"
        Label1.Text = "OFF"
        Label1.BackColor = Drawing.Color.Red
    end if
    end sub

    Sub OnOff_Click(ByVal Sender As Object, ByVal e As System.EventArgs)

    Dim SQLConn As SqlConnection = New SqlConnection(connectionSTR )
    Dim updateCMD As SqlCommand
    dim query as string

    If OnOff.Text = "Press to Close" Then
        query = = UPDATE Device1 SET rawvalue = False WHERE Device = 'Channel1'"
        changeButton(0)
    Else
        query = "UPDATE Device1 SET rawvalue = True WHERE Device = 'Channel1'"
        changeButton(1)
    End If

    updateCMD = New SqlCommand(query , oSQLConn)
    updateCMD .CommandType = CommandType.Text

    SQLConn.Open()
    updateCMD .executenonQuery
    SQLConn.close()

    end sub

  •  19-04-2007, 13:29 30307 σε απάντηση της 26928

    Απ: Toggle Button για update σε Βαση







    Sub Page_Load(ByVal Sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

    If Not Page.IsPostBack Then
    Dim SQLconn As New SqlConnection("Server=(local)\SQLExpress;Initial Catalog=Test;Integrated Security=True")
    SQLconn.Open()
    Dim Query As String = "SELECT [rawvalue] FROM [device1] WHERE Device = Channel1'"
    Dim SelectCmd As New SqlCommand(Query, SQLconn)
    Dim result As Boolean

    SQLconn.Open()
    Dim myDataReader As SqlDataReader
    myDataReader = SelectCmd.ExecuteReader()
    result = myDataReader.GetBoolean(1)
    SQLconn.Close()

    ChangeButton(result)
    End If
    End Sub

    Sub ChangeButton(ByVal Status As Boolean)
    If Status Then
    OnOff.Text = "Press to Close"
    Label1.Text = "ON"
    Label1.BackColor = Drawing.Color.Green
    Else
    OnOff.Text = "Press To Open"
    Label1.Text = "OFF"
    Label1.BackColor = Drawing.Color.Red
    End If
    End Sub



    Ειμαι στο πρωτο κομματι του διαβασματος.
    Εκανα μερικες αλλαγες και χρησιμοποιησα Datareader για να διαβαζω απο την βαση και αντιστοιχιζω την τιμη boolean που διαβαζει ο datareader στην μεταβλητη result.

    result = myDataReader.GetBoolean(0)
    Δεν ειμαι σιγουρος για την τιμη μεσα στην GetBoolean(?) αλλα πρεπει να ειναι 0 επειδη αντιστοιχει στο index [rawvalue].

    Στο debug παιρνω το εξης σφαλμα:
    "The connection was not closed. The connection's current state is open."
    Στην γραμμη SQLconn.Open().

    Το Page.IsPostBack ειναι για να τσεκαρει αν η σελιδα φορτωνεται για πρωτη φορα ετσι δεν ειναι?

    *Επισης πως κανουμε να φαινεται ο κωδικας που ποσταρουμε VB code οπως στο πιο πανω post?
  •  19-04-2007, 15:58 30331 σε απάντηση της 30307

    Απ: Toggle Button για update σε Βαση

    Τελικα ελυσα ολα τα προβληματα και δουλευει.

    agmarios ηθελα να σε ρωτησω για το δευτερο μερος που πρεπει να δουλευει με το πατημα του κουμπιου.

    Το datareader απο οτι καταλαβα δεν μπορει να το κανει αυτο καθως μονο μπορει να διαβαζει. Για να το βαλω να γραφει στην Βαση πρεπει να χρησιμοποιησω DataSet τωρα ή υπαρχει αλλος τροπος?
  •  19-04-2007, 19:14 30364 σε απάντηση της 30331

    Απ: Toggle Button για update σε Βαση

    για να κάνεις Update δεν χρειάζεται ούτε Reader ούτε dataset (αλλά γίνεται και με dataset) .
    Αρκεί το sqlCommand στο οποίο θα περάσεις το Update query και θα τρέξεις την sqlCommand.ExecuteNonQuery ή οποία τρέχει το query και δεν επιστρέφει αποτελέσματα.

    Ο τρόπος αυτός επικοινωνίας με τη βάση είναι αρκετά παλιομοδίτικος και δεν συνίσταται. Το σωστό είναι να φτιάξεις ένα data access layer με ξεχωριστά αντικείμενα τα οποία θα αναλάβουν την επικοινωνία με τη βάση. Αυτή όμως είναι μια τεράστια συζήτηση. Διάβασε για 3-tier (3-layer) εφαρμογές και για τις απορίες σου άνοιξε νέα θέματα. Θα βρεθούν πολλοί "αρχιτέκτονες" να σε βοηθήσουν.
  •  19-04-2007, 20:48 30370 σε απάντηση της 30364

    Απ: Toggle Button για update σε Βαση

    ΟΚ θα δοκιμασω και την Update με τον παλιομοδιτικο τροπο επειδη δεν εχω πολυ χρονο στην διαθεση μου και με τα πιο προχωρημενα θα ασχοληθω αφου το κανω να δουλεψει.
    Αν εχεις καποια πηγη με πληροφοριες θα ημουν ευγνωμων για το data access layer για να ξερω απο που να αρχισω.

    Thanks!!!

    Μεχρι τωρα εχω φτασει εως εδω και προχωραμε:

    Sub Page_Load(ByVal Sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

    If Not Page.IsPostBack Then
    Dim SQLconn As New SqlConnection("Server=(local)\SQLExpress;Initial Catalog=Test;Integrated Security=True")
    SQLconn.Open()
    Dim Query As String = "SELECT [rawvalue] FROM [Device1] WHERE device='channel1'"
    Dim SelectCmd As New SqlCommand(Query, SQLconn)
    Dim result As Boolean
    Dim myDataReader As SqlDataReader
    myDataReader = SelectCmd.ExecuteReader()
    myDataReader.Read()
    result = myDataReader.GetBoolean(0)
    SQLconn.Close()

    ChangeButton(result)
    End If
    End Sub

    Sub ChangeButton(ByVal Status As Boolean)
    If Status Then
    OnOff.Text = "Press to Close"
    Label1.Text = "ON"
    Label1.BackColor = Drawing.Color.Green
    Else
    OnOff.Text = "Press To Open"
    Label1.Text = "OFF"
    Label1.BackColor = Drawing.Color.Red
    End If
    End Sub
  •  20-04-2007, 11:20 30436 σε απάντηση της 30370

    Απ: Toggle Button για update σε Βαση

  •  23-04-2007, 10:32 30759 σε απάντηση της 30436

    Απ: Toggle Button για update σε Βαση

    Οπως ειπα η συνδεση με την βαση εγινε και δουλευει νερακι.....επισης εβαλα το connection sting στο web.config,εβαλα και καποιες stored procedures για την Select και αργοτερα θα βαλω και για την Update οπως ειπε ο Μαριος. Επισης με το πατημα του κουμπιου αλλαζω και την εικονα του button ωστε να δειχνει αν ειναι αναμμενο ή οχι. To θεμα ειναι οπως δειχνω και στην εικονα εχω 7 controls που παιρνουν τιμες απο 7 πινακες. Αυτο σημαινει οτι πρεπει να γραψω 7 φορες τις τρεις συναρτησεις και να ανοιγω-κλεινω 7 φορες την connection στην βαση νομιζω οτι προγραμματιστικα ειναι λαθος. Δεν θα μπορουσα με να κανω τουλαχιστο την αρχικοποιηση των buttons  στην Page_load καπως πιο καλα????

     

    Public SQLconn As New SqlConnection(ConfigurationManager.ConnectionStrings("TestConnectionString").ToString())

    Sub Page_Load(ByVal Sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

    SQLconn.Open()

    Dim SelectCmd1 As New SqlCommand("prodiakoptis1", SQLconn)

    SelectCmd1.CommandType = CommandType.StoredProcedure

    Dim result1 As Boolean

    Dim myDataReader1 As SqlDataReader

    myDataReader1 = SelectCmd1.ExecuteReader()

    myDataReader1.Read()

    result1 = myDataReader1.GetBoolean(0)

    SQLconn.Close()

     

    SQLconn.Open()

    Dim SelectCmd2 As New SqlCommand("prodiakoptis2", SQLconn)

    SelectCmd2.CommandType = CommandType.StoredProcedure

    Dim result2 As Boolean

    Dim myDataReader2 As SqlDataReader

    myDataReader2 = SelectCmd2.ExecuteReader()

    myDataReader2.Read()

    result2 = myDataReader2.GetBoolean(0)

    SQLconn.Close()

     

    SQLconn.Open()

    Dim SelectCmd3 As New SqlCommand("prodiakoptis3", SQLconn)

    SelectCmd3.CommandType = CommandType.StoredProcedure

    Dim result3 As Boolean

    Dim myDataReader3 As SqlDataReader

    myDataReader3 = SelectCmd3.ExecuteReader()

    myDataReader3.Read()

    result3 = myDataReader3.GetBoolean(0)

    SQLconn.Close()

     

    ChangeButton1(result1)

    ChangeButton2(result2)

    ChangeButton3(result3)

    End Sub

     

    Sub ChangeButton1(ByVal Status As Boolean)

    If Status 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 [diakoptis1] SET [rawvalue] = 'False' WHERE [device] = 'channel1'"

    ChangeButton1(0)

    Else

    query = "UPDATE [diakoptis1] SET [rawvalue] = 'True' WHERE [device] = 'channel1'"

    ChangeButton1(1)

    End If

    updateCMD = New SqlCommand(query, SQLconn)

    updateCMD.CommandType = CommandType.Text

    SQLconn.Open()

    updateCMD.ExecuteNonQuery()

    SQLconn.Close()

    End Sub

     

    Sub ChangeButton2(ByVal Status As Boolean)

    If Status Then

    Label2.Text = "ON"

    OnOff2.Style.Value = "background-image: url(../ImgContr/1.png);"

    Else

    Label2.Text = "OFF"

    OnOff2.Style.Value = "background-image: url(../ImgContr/2.png);"

    End If

    End Sub

     

    Sub OnOff_Click2(ByVal Sender As Object, ByVal e As System.EventArgs)

    Dim updateCMD As SqlCommand

    Dim query As String

    If Label2.Text = "ON" Then

    query = "UPDATE [diakoptis2] SET [rawvalue] = 'False' WHERE [device] = 'channel1'"

    ChangeButton2(0)

    Else

    query = "UPDATE [diakoptis2] SET [rawvalue] = 'True' WHERE [device] = 'channel1'"

    ChangeButton2(1)

    End If

    updateCMD = New SqlCommand(query, SQLconn)

    updateCMD.CommandType = CommandType.Text

    SQLconn.Open()

    updateCMD.ExecuteNonQuery()

    SQLconn.Close()

    End Sub

     

    Sub ChangeButton3(ByVal Status As Boolean)

    If Status Then

    Label3.Text = "ON"

    OnOff3.Style.Value = "background-image: url(../ImgContr/1.png);"

    Else

    Label3.Text = "OFF"

    OnOff3.Style.Value = "background-image: url(../ImgContr/2.png);"

    End If

    End Sub

     

    Sub OnOff_Click3(ByVal Sender As Object, ByVal e As System.EventArgs)

    Dim updateCMD As SqlCommand

    Dim query As String

    If Label3.Text = "ON" Then

    query = "UPDATE [diakoptis3] SET [rawvalue] = 'False' WHERE [device] = 'channel1'"

    ChangeButton3(0)

    Else

    query = "UPDATE [diakoptis3] SET [rawvalue] = 'True' WHERE [device] = 'channel1'"

    ChangeButton3(1)

    End If

    updateCMD = New SqlCommand(query, SQLconn)

    updateCMD.CommandType = CommandType.Text

    SQLconn.Open()

    updateCMD.ExecuteNonQuery()

    SQLconn.Close()

    End Sub

     

    Και μια προεσκοπιση για το τι ακριβως κανω:

     

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems