Получить строки / данные из таблицы данных после закрытия приложения - PullRequest
0 голосов
/ 05 июня 2018

У меня есть диалоговая форма, где пользователь может загрузить файл из Excel и импортировать и отобразить в виде таблицы данных.Однако моя проблема заключается в том, что когда пользователь закрывает приложение или форму, представление данных было пустым и сбрасывалось.

Мой вопрос заключается в том, как я могу получить и отобразить его данные каждый раз, когда пользователь открывает форму.Возможно ли, если данные не были сохранены в базе данных и будут основаны только на загруженном или импортированном файле Excel?И если пользователь загрузил новый Excel, я хочу заменить существующие строки или данные в представлении данных.

Я действительно надеюсь, что вы поможете.

Ниже вы можете найти мой код:

Imports System.Data
Public Class frmSupplier


Private Sub btn_upload_supplier_Click(sender As Object, e As EventArgs) Handles btn_upload_supplier.Click
        Try
            If btn_upload_supplier.Text = "New" Then
                Dim Openfile As New OpenFileDialog
                Openfile.ShowDialog()
                txtpath_supplier.Text = Openfile.FileName
                Label1.Text = txtpath_supplier.Text
                If txtpath_supplier.Text = Nothing Then
                Else
                    btn_upload_supplier.Text = "Upload"
                End If
            ElseIf btn_upload_supplier.Text = "Upload" Then
                Dim dtItemlist As New DataTable
                Dim obj As New Basegeneral

                Try
                    Dim MyConnection As System.Data.OleDb.OleDbConnection
                    Dim DtSet As System.Data.DataSet
                    Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
                    MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;  Data Source=" + txtpath_supplier.Text.ToString() + "; Extended Properties=Excel 8.0;")
                    MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection)
                    MyCommand.TableMappings.Add("Table", "TestTable")
                    DtSet = New System.Data.DataSet
                    MyCommand.Fill(DtSet)
                    dg_details.DataSource = DtSet.Tables(0)

                    MyConnection.Close()

                Catch ex As Exception
                    MessageBox.Show(Me, ex.ToString, "Error:")
                End Try

            End If

        Catch ex As Exception
            MessageBox.Show(Me, ex.ToString, "Error:")
        End Try

    End Sub




    Private Sub btnDelete_Click(sender As Object, e As EventArgs) Handles btnDelete.Click
        Try
            Dim row As System.Data.DataRow = GridView1.GetDataRow(GridView1.FocusedRowHandle)

            If row.Item(0).ToString = "" Then
                MessageBox.Show("Please select supplier to remove", "KCC Retail System")
                Return
            End If

            If DevExpress.XtraEditors.XtraMessageBox.Show("Are you sure you want to remove supplier  '" & row.Item(0) & "'?", "WARNING", MessageBoxButtons.YesNo, MessageBoxIcon.Error, MessageBoxDefaultButton.Button2) = Windows.Forms.DialogResult.Yes Then
                MessageBox.Show("Supplier  " & row.Item(0) & "  has been removed!", "KCC Retail System")
                GridView1.DeleteRow(GridView1.FocusedRowHandle)
            Else
                Return
            End If


        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error :")
        End Try

    End Sub

    Private Sub btn_clear_Click(sender As Object, e As EventArgs) Handles btn_clear.Click
        btn_upload_supplier.Text = "New"
        txtpath_supplier.Text = ""
    End Sub

Форма откроется, когда пользователь нажмет кнопку, и отобразится в виде диалога (ShowDialog).

1 Ответ

0 голосов
/ 06 июня 2018

Для сохранения, а затем повторного увлажнения содержимого DataGridView вы можете использовать двоичный форматер.

Imports System.IO
Import System.Runtime.Serialization.Formatters.Binary
    Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
        Dim FileName As String = "MyData.dat" 'Will save in bin directory
        Dim dt As DataTable = CType(DataGridView1.DataSource, DataTable)
        ' 1. Create an instance of a Binary Formatter
        Dim bf As New BinaryFormatter
        ' 2. Create a file stream passing in (the name of the file to create, mode: Create, access: Write, share: none)
        Using fs As Stream = New FileStream(FileName, FileMode.Create, FileAccess.Write, FileShare.None)
            ' 3. use the Serialize method of the Binary Formatter passing in the file stream(file name, create, write, no share) And the object
            bf.Serialize(fs, dt)
        End Using
    End Sub

    Private Sub btnFillFromFill_Click(sender As Object, e As EventArgs) Handles btnFillFromFill.Click
        Dim FileName As String = "MyData.dat"
        Dim dt As DataTable
        ' 1. Create an instance of Binary Formatter
        Dim bf As New BinaryFormatter()
        ' 2. Get an instance of a FileStream for the OpenRead method of File passing in (the fileName)
        Using fs As Stream = File.OpenRead(FileName)
            ' 3. cast back to original object, the Deserialize method of the Binary Formatter passing in the File Stream
            dt = CType(bf.Deserialize(fs), DataTable)
        End Using
        DataGridView1.DataSource = dt
    End Sub 
...