Avec l'aide de DataView, nous pouvons créer différentes vues pour les données stockées dans le DataTable. Par exemple, via DataView, vous pouvez utiliser différents ordres de tri pour afficher les données dans le DataTable, ou filtrer les données dans le DataTable en fonction de l'état de la colonne de données ou des expressions de filtre. L'important est que lorsque nous devons créer différentes vues pour les données du DataTable et lier ces données aux contrôles du formulaire, nous devons utiliser DataView pour le compléter.
DataView fournit une vue dynamique des données, c'est-à-dire que son contenu, son ordre de tri et ses membres refléteront toutes les modifications apportées au DataTable source. Évidemment, DataView est très différent de la méthode DataTable.Select. La méthode Select renverra un tableau d'objets DataRow de la table de données en fonction d'une expression de filtre ou d'un ordre de tri spécifique, et ses membres et son ordre de tri sont statiques. En raison de la nature réactive et dynamique de DataView, il est très approprié pour une utilisation dans les applications de liaison de données.
DataView vous offre une vue dynamique d'une seule collection de données. Vous pouvez appliquer différents ordres de tri et conditions de filtrage à la collection de données. Ceci est quelque peu similaire à la vue fournie par la base de données SQL Server. Cependant, il existe encore une grande différence entre DataView et la vue de base de données, car DataView ne peut pas être utilisé comme table de données, ni fournir une vue permettant de connecter la table de données. De plus, non seulement vous ne pouvez pas exclure des champs de la table de données source, mais vous ne pouvez pas non plus ajouter des champs supplémentaires qui n'existent pas dans la table de données source (par exemple : champs d'expression).
Vous pouvez créer un DataView de deux manières. La première méthode consiste à utiliser le constructeur DataView et la seconde consiste à créer une référence à la propriété DefaultView du DataTable. Cet article explorera en détail comment utiliser ces deux méthodes pour créer DataView.
Utilisation du constructeur DataView
Le constructeur DataView fournit trois versions multiload, comme indiqué dans le tableau ci-dessous.
Version multicharge du constructeur DataView
DataView()
DataView (table ByVal en tant que DataTable)
DataView(table ByVal Comme DataTable, _
ByVal RowFilter As String, _
ByVal Trier comme chaîne, _
ByVal RowState comme DataViewRowState)
La première version du constructeur DataView initialise une nouvelle instance de la classe DataView sans aucun paramètre. Veuillez noter que si vous utilisez cette version pour créer un DataView, vous devez d'abord définir la propriété Table après avoir créé l'objet DataView pour déterminer son DataTable source, puis vous pouvez continuer à définir d'autres propriétés (RowFilter, Sort... etc.) .
Le code de programme suivant montre comment utiliser la première version du constructeur DataView pour créer un objet DataView afin de filtrer et trier les colonnes de données de la table de données « Zhang Limin Studio » dans l'ensemble de données, et lier le contrôle DataGridView à celui-ci. Vue de données. Nous avons constaté que le contrôle DataGrid n'affichera que les femmes et que les données seront classées dans l'ordre des traits des noms, du plus au moins. Voici le code du programme pour cet exemple :
SqlDataAdapter1.Fill (Ds Zhang Limin Studio, "Zhang Limin Studio")
'Créer un objet DataView
Dim dv As DataView = New DataView
' Puisque le constructeur DataView sans aucun paramètre est utilisé pour créer l'objet DataView,
' Par conséquent, la propriété Table doit être définie en premier pour déterminer sa source DataTable
dv.Table = Ds Zhang Limin Studio
' Définissez l'ordre de tri de sorte que l'ordre des traits du nom soit disposé du plus au moins.
dv.Sort = "NameDESC"
'Définit les conditions de filtre pour afficher uniquement les femmes
dv.RowFilter = "Gender = 'Female'"
' Lier le contrôle DataGridView au DataView
DataGridView1.DataSource = dv
La deuxième version du constructeur DataView représente l'utilisation du DataTable spécifié pour initialiser une nouvelle instance de la classe DataView.
Le code de programme suivant montre comment utiliser la deuxième version du constructeur DataView pour créer un objet DataView afin de filtrer et trier les colonnes de données de la table de données « Zhang Limin Studio » dans l'ensemble de données, et lier le contrôle DataGridView à celui-ci. Vue de données . Nous avons constaté que le contrôle DataGridView affichera uniquement les données des employés du « Service d'information », et les données seront classées du haut au bas en fonction du salaire actuel :
SqlDataAdapter1.Fill(Ds Zhang Limin Studio, "Zhang Limin Studio")
'Créer un objet DataView
Dim dv As DataView = New DataView (Ds Zhang Limin Studio. Zhang Limin Studio)
'Définissez l'ordre de tri pour trier du haut au bas en fonction du salaire actuel
dv.Sort = "Current Salary DESC"
'Définissez les conditions de filtre pour afficher uniquement les données des employés du "Département d'information"
dv.RowFilter = "Department = 'Information Department'"
' Lier le contrôle DataGridView au DataView
Me.DataGridView1.DataSource = dv
La troisième version du constructeur DataView représente l'initialisation d'une nouvelle instance de la classe DataView à l'aide des DataTable, RowFilter, Sort et DataViewRowState spécifiés.
Le code de programme suivant montre comment utiliser la troisième version du constructeur DataView pour créer un objet DataView afin de filtrer et trier les colonnes de données de la table de données « Zhang Limin Studio » dans l'ensemble de données, et lier le contrôle DataGridView à celui-ci. Vue de données . Nous avons constaté que le contrôle DataGridView n'affichera que les données des employés dont le salaire actuel est supérieur à 49 000 yuans, et les données seront classées du haut au bas en fonction du salaire actuel :
SqlDataAdapter1.Fill(Ds Zhang Limin Studio, "Zhang Limin Studio")
'Créer un objet DataView
Dim dv As DataView = Nouveau DataView ( _
Studio Zhang Limin, _.
"Salaire actuel > 49000", _
"Salaire actuel DESC", _
DataViewRowState.CurrentRows)
' Lier le contrôle DataGridView au DataView
Me.DataGridView1.DataSource = dv
Je voudrais rappeler à tous que lorsque le DataView est créé et que l'une des propriétés Sort, RowFilter ou RowStateFilter est modifiée, l'index du DataView sera rétabli. Cela signifie que si vous souhaitez bénéficier des meilleures performances, vous devez spécifier l'ordre de tri ou les critères de filtrage directement dans le constructeur lors de la création du DataView. Si vous ne spécifiez pas directement l'ordre de tri ou les conditions de filtrage dans le constructeur lors de la création d'un DataView, mais définissez plutôt les propriétés Sort, RowFilter ou RowStateFilter de l'objet DataView après sa création, l'index du DataView sera rétabli. l'index doit être créé au moins deux fois.
Utilisation de la propriété DefaultView de DataTable
La propriété DefaultView du DataTable renvoie un objet DataView qui utilise le DataTable comme table de données source, vous permettant de trier, filtrer et rechercher les colonnes de données dans le DataTable. Si le DataView que vous créez souhaite afficher toutes les colonnes de données du DataTable et les organiser dans un ordre naturel, l'utilisation de la propriété DefaultView du DataTable sera un moyen très direct et pratique de créer le DataView.
Pour le programme dont l'écran d'exécution est illustré dans la figure 1, il utilise la propriété DefaultView du DataTable pour créer un DataView afin que toutes les colonnes de données de la table de données source puissent être affichées dans le contrôle DataGrid au début, et permet à l'utilisateur pour transmettre le DataView pendant la phase d'exécution pour filtrer dynamiquement les données. Le code du programme est répertorié ci-dessous :
' Déclaration de niveau catégorie de l'objet DataView
Dv privé en tant que DataView
Private Sub DemoForm5_Load (expéditeur ByVal en tant que System.Object, _
ByVal et As System.EventArgs) gère MyBase.Load
FillComboBoxDepartment()
SqlDataAdapter1.Fill(Ds Zhang Limin Studio, "Zhang Limin Studio")
' Créer DataView
dv = Ds Zhang Limin Studio.DefaultView
' Afficher le nombre de colonnes de données dans le DataView.
txtRowCount.Text = dv.Count.ToString
' Lier le contrôle DataGridView au DataView
Me.DataGridView1.DataSource = dv
Fin du
sous-sous-privé FillComboBoxDepartment()
'Créer un objet de commande de données (c'est-à-dire un objet SqlCommand)
Dim foxCMD en tant que nouveau SqlCommand
foxCMD.Connection = SqlConnection1
foxCMD.CommandText = "SELECT DISTINCT Department FROM dbo.Zhang Limin Studio"
'Ouvrir la connexion
SqlConnection1.Open()
Utilisation de myReader comme SqlDataReader = foxCMD.ExecuteReader()
Si myReader.HasRows Alors
Pendant que myReader.Read()
ComboBoxDepartment.Items.Add(myReader.GetSqlString(0))
Terminer pendant
Fin si
Fin de l'utilisation
ComboBoxDepartment.SelectedIndex = 0
End Sub
Private Sub btnFilter_Click (expéditeur ByVal en tant que System.Object, _
ByVal et As System.EventArgs) gère btnFilter.Click
dv.RowFilter = "Département= '" & _
ComboBoxDepartment.SelectedItem.ToString() & "'"
'Afficher le nombre de colonnes de données dans le DataView
txtRowCount.Text = dv.Count.ToString
Fin du sous-titre
http://www.cnblogs.com/liminzhang/archive/2006/10/23/537518.html