Non seulement possible mais assez simple. Je vais juste cela avec un ensemble de données contenant des données qui utilisent datagridviews pour l'entrée. Le dgv utilise bindingsources comme source de données et la source de liaison a l'ensemble de données comme source de données et peut être datamember.
Je sérialise l'ensemble de données à une colonne varbinary (max) dans SQL Server.
(j'utilise des propriétés fortement typées sur mon objet métier, mais cela devrait vous donner l'idée)
'-- Copy dataset to property
'-- Establish locals
Dim loFormatter As New BinaryFormatter()
Dim loStream As New System.IO.MemoryStream()
'-- Serialize the business object
loFormatter.Serialize(loStream, Me.DsPolicies1)
'-- Return the created stream
Me.PoliciesBO1.Dataset_Bytes = loStream.ToArray()
Lorsque l'enregistrement politique est gouverné, la propriété est désérialisée
If Me.PoliciesBO1.Count > 0 And Me.PoliciesBO1.CurrentRowIndex >= 0 Then
Me.clear_bindingsources()
Dim loformatter As New BinaryFormatter()
Dim lomemorystream As MemoryStream = _
New MemoryStream(Me.PoliciesBO1.Dataset_Bytes, 0, _
Me.PoliciesBO1.Dataset_Bytes.Length, True)
Me.DsPolicies1 = _
CType(loformatter.Deserialize(lomemorystream), dsPolicies)
'-- Rehook datasource
Me.rehook_Bindingsources()
Me.refresh_dgvs()
Le dernier deux sous-réseaux réinitialisent simplement la source de données bindingsource et le datamember pour chaque table, puis actualisent chaque dgv
(je les utilise pour la collecte de données afin de remplir des formulaires PDF) 012 La seule difficulté consiste à se rappeler que la source de données doit être vide sur un nouvel enregistrement et doit être complètement rechargée à partir des données après le déplacement d'un pointeur d'enregistrement "parent".
D'accord, la sérialisation est une alternative mais j'irais vers WriteXML, peut-être vers un CompressionStream. –