Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Problema DataGrid e RowFilter
venerdì 28 ottobre 2005 - 18.24
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
tamamma
Profilo
| Newbie
2
messaggi | Data Invio:
ven 28 ott 2005 - 18:24
Salve a tutti, spero che qualcuno riesca ad aiutarmi a risolvere questo problema. Ho fatto una form nella quale c'è un DataGrid che carica i dati da MSDE e poi visualizza la riga selezionata in campi textBox. Funziona tutto correttamente, solo che ho voluto inserire 2 textbox ed un tasto di ricerca tramite il quale, attraverso RowFilter chiamato sul DataSet faccio visualizzare solo i record risultanti dall'applicazione del filtro. Solo che dopo aver eseguito il filtro non funziona più il binding dei campi textBox con il DataSet ovvero non mi aggiorna + i campi textBox readonly che ho impostato e che fino a prima di eseguire il filtro erano perfettamente Bindati.
Grazie a tutti in anticipo.
Allego il codice:
Questo è il Load:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim frmStatusMessage As New frmStatus
If Not didPreviouslyConnect Then
frmStatusMessage.Show("Connecting to SQL Server")
End If
Dim isConnecting As Boolean = True
While isConnecting
Try
Dim databaseConnection As New SqlConnection(connectionString)
Dim dataAdapter As New SqlDataAdapter("select * from Soci", databaseConnection)
SociDataSet.Clear()
dataAdapter.Fill(SociDataSet, NOME_TABELLA)
'Applico stile al DataGrid
FormatGridWithBothTableAndColumnStyles()
'dgSoci.DataSource = SociDataSet.Tables(NOME_TABELLA)
dgSoci.DataSource = SociDataSet
dgSoci.DataMember = NOME_TABELLA
isConnecting = False
Catch ex As Exception
MessageBox.Show(CONNECTION_ERROR_MSG, _
"Connessione Fallita!", MessageBoxButtons.OK, _
MessageBoxIcon.Error)
End Try
End While
frmStatusMessage.Close()
'collego i campi text dei textBox alle colonne del dataset
txtTesseraOut.DataBindings.Add("Text", SociDataSet, "Soci.Tessera")
txtNomeOut.DataBindings.Add("Text", SociDataSet, "Soci.Nome")
txtCognomeOut.DataBindings.Add("Text", SociDataSet, "Soci.Cognome")
txtDocumentoOut.DataBindings.Add("Text", SociDataSet, "Soci.Documento")
End Sub
e questa è la sub che mi esegue la ricerca:
Private Sub BtnCerca_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCerca.Click
Const MESSAGEBOX_CAPTION As String = "Filtro"
' Verifico che ci sono i dati prima di filtrare
Debug.Assert(Not SociDataSet.Tables(NOME_TABELLA) Is Nothing, _
"Non ci sono soci caricati in SociDataSet.Tables(NOME_TABELLA)")
With SociDataSet.Tables(NOME_TABELLA)
' Filtro per vedere solo i soci in base alla ricerca per Tessera
' o per Cognome.
If Not IsValidForm() Then
Exit Sub
End If
If txtCognome.Text <> "" Then
.DefaultView.RowFilter = "Cognome like '" & txtCognome.Text & "%'"
ElseIf txtTessera.Text <> "" Then
Dim tessera As Integer = Int32.Parse(txtTessera.Text)
.DefaultView.RowFilter = "Tessera = " & tessera & ""
End If
' Ci sono valori corrispondenti?
If .DefaultView.Count = 0 Then
MessageBox.Show("Non ci sono soci corrispondenti.", _
MESSAGEBOX_CAPTION, _
MessageBoxButtons.OK, _
MessageBoxIcon.Information)
End If
' Collegando il dataGrid con li DataView la griglia visualizzerà
' solo le righe corrispondenti.
dgSoci.DataSource = .DefaultView
txtTessera.Enabled = True
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
ven 28 ott 2005 - 22:07
Secondo me potresti provare ad utilizzare una dataview.
Definisci un dataview a livello di modulo
Imposta la tabella come source del dataview
Metti il binding su dataview
Utilizza il dataview per filtrare
tamamma
Profilo
| Newbie
2
messaggi | Data Invio:
ven 4 nov 2005 - 12:29
Ciao, perdona l'ignoranza ma potresti postarmi un esempio di ciò che mi hai scritto oppure almeno la modifica da fare al codice che ho postato io? Grazie mille
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
ven 4 nov 2005 - 13:19
Credo che le indicazioni che ti ho dato siano sufficienti.
Comunque:
Con l'ide prendi un dataview e mettilo nella form
Imposta la datasource del dataview = alla tua tabella da gestire
Imposta il datasource (da solo) della tua datagrid sulla dataview
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !