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

 

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

Datagrid update....

Îåêßíçóå áðü ôï ìÝëïò astellas. Τελευταία δημοσίευση από το μέλος Χρήστος Γεωργακόπουλος στις 24-03-2006, 17:34. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  24-03-2006, 15:41 11078

    Datagrid update....

    Χαίρεται,
    Είμαι καινούργιος από ότι έχετε καταλάβει εδώ πέρα. Δεν βρήκα κάποιο άλλο ερώτημα να έχει γίνει και έτσι είπα να κοινοποιήσω το πρόβλημά μου για να το συζητήσουμε και αν κάποιος άλλος ξέρει να με βοηθίσει.
    Ερχομαι λοιπόν στο πρόβλημα.

    Σε μια Form έχω ένα DataGrid. Η φόρμα αυτή χρησιμοποιείται σαν serach εργαλείο. Έχει δύο textboxes, το datagrid που ανέφερα και ένα Button για να ξεκινήσει η αναζήτηση στη βάση. Τα αποτελέσματα της αναζήτησης έρχονται στο Datagrid.
    αντιμετωπίζω λοιπόν το εξής πρόβλημα. Την πρώτη φορά που κάνω την αναζήτηση μου δίνει τα αποτελέσματα. Τη δεύτερη φορά αλλάζοντας κάτι στα κριτήρια και πατώντας το κουμπί να κάνει search ενώ, βρίσκει τα καινούργια data που ανταποκρίνονται στα κριτήρια, στο datagrid παραμένουν τα αποτελέσματα της προηγούμενης αναζήτησης.
    Ο κώδικας είναι ο παρακάτω:
        Private Sub SearchForAClient()
            Dim strSQL As String

            Dim strFName As String
            Dim strSName As String
            Dim lngRecords As Long

            With grdResults
                .DataSource = Nothing
                .DataMember = ""
               
    .CaptionText = "Clients for Last name: " & strSName & " and
    First Name : "
    & strFName
            End With

            If CheckFields() Then
                strFName = "'%" & txtFName.Text & "%'"
                strSName = "'%" & txtSName.Text & "%'"

                If strFName = "'% %'" Or strFName = "''" Then
                    strFName = "'%%'"
                End If
                If strSName = "'% %'" Or strSName = "''" Then
                    strSName = "'%%'"
                End If

                If dts_Clients.Tables.Count > 0 Then
                    dts_Clients.Tables.Remove("Clients")
                End If
               
    strSQL = "SELECT ClCode as [Client code], SName as [Last Name], FName
    as [First Name], FNP as [Company], FatherName as [Father Name],
    BirthDate, AFM as [Tax Number] "
    _
                       
    & " FROM tblClients WHERE SName LIKE " & strSName & " AND
    FName LIKE "
    & strFName
               
    dad_Clients = New SqlClient.SqlDataAdapter(strSQL, cnMasterConnection)
                dad_Clients.Fill(dts_Clients, "Clients")

                With grdResults
                    .DataSource = dts_Clients
                    .DataMember = "Clients"
                   
    .CaptionText = "Clients according to criteria."
                End With
            Else
               
    MessageBox.Show("You have to fulfill the fields with the right way!",
    "Invaqlid values for search", MessageBoxButtons.OK,
    MessageBoxIcon.Error)
            End If

        End Sub

    Πού έχω κάνει λάθος;

    Never give up!
  •  24-03-2006, 16:08 11080 σε απάντηση της 11078

    Απ: Datagrid update....

    Μην αποσυνδέεις το dataset από το datagrid στο ξαναγέμισμα. Άσε το dataset δεμένο όπως είναι, κάνε ένα clear για να φύγουν τα παλιά, και δώσε Fill από τον adapter.


    Χρήστος Γεωργακόπουλος
  •  24-03-2006, 16:25 11082 σε απάντηση της 11080

    Wink [;)] Απ: Datagrid update....

    Αν κατάλαβα καλά μου είπες να αντικαταστίσω αυτό:

    If dts_Clients.Tables.Count > 0 Then

        dts_Clients.Tables.Remove("Clients")

    End If


    με αυτό:
    If dts_Clients.Tables.Count > 0 Then

        dts_Clients.Clear

    End If



    το έκανα και έπεξαι. Ευχαριστώ!


    Never give up!
  •  24-03-2006, 17:34 11085 σε απάντηση της 11082

    Απ: Datagrid update....

    Ο λόγος που σου δημιουργούσε πρόβλημα είναι ότι σβήνοντας το table χάνεται το δέσιμο (data binding) που έχει το grid με τον πίνακα και μετά το grid δεν παίρνει χαμπάρι ότι γίνονται αλλαγές από κάτω.

    Το If που έχεις πάντως είναι περιττό. Εσύ θέλεις να γίνει clear σε κάθε περίπτωση. Το αν θα κάνει κάτι αν δεν έχει πίνακες μέσα, το dataset το ξέρει από μόνο του.


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