DataGridViewを介してDataTableにデータを追加し、それをシリアル化してDataTableに保存することが可能かどうか、そして基礎となるデータベースを作成する必要はありません。 1つのDataTableは、私が保存しようとしているデータの量には十分であり、データベースは間違いなく過剰です。DataGridViewから入力されたデータでDataTableをシリアライズ
ありがとうございます!
DataGridViewを介してDataTableにデータを追加し、それをシリアル化してDataTableに保存することが可能かどうか、そして基礎となるデータベースを作成する必要はありません。 1つのDataTableは、私が保存しようとしているデータの量には十分であり、データベースは間違いなく過剰です。DataGridViewから入力されたデータでDataTableをシリアライズ
ありがとうございます!
シリアル化についてご質問いただきありがとうございます。
DataTableをDataGridView DataSourceプロパティに割り当てると、フォームにデータを入力すると自動的にDataTableに追加されます。
DataTable内のデータをDBの外で永続化する場合は、DataTable WriteXml()メソッド(およびReadXml()を使用してデータをロードする必要があります)。ご覧のとおり、データはxml形式でシリアル化されています。
可能なだけでなく、かなり簡単です。私はちょうど入力にdatagridviewsを使用するdatatablesを含むデータセットでそれを行っています。 dgvはデータソースとしてbindingsourcesを使用し、バインディングソースにはdatasourceとしてデータセットがあり、datamemberとしてdatatableがあります。
データセットをSQL Serverのvarbinary(max)列にシリアル化します。
(私は私のビジネスオブジェクトに強く型付けされたプロパティを使用しますが、これはあなたのアイデアを与える必要があります)ポリシーのレコードは、プロパティが
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()
最後にデシリアライズされるナビゲートされる
'-- 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()
2つのサブシステムがそれぞれのテーブルのbindingsourceデータソースとdatamemberをリセットした後、各dgvをリフレッシュします。
(私はPDFフォームを記入するためにデータ収集に使用します)
唯一の難しい部分は、新しいレコードでデータソースが空でなければならず、 "親"レコードポインタが移動した後にデータから完全にリロードする必要があるということです。
合意しましたが、シリアライゼーションは代替ですが、私はWriteXML、おそらくCompressionStreamに行くでしょう。 –