如何向数据网格视图添加保存功能?

时间:2017-05-09 22:56:50

标签: visual-studio datagridview save

您好我对视觉工作室还不熟悉,我在为我的程序添加保存功能时遇到了一些麻烦。基本上我的程序所做的是为用户设置事件提醒(它就像每日计划者但没有通知)。我有“添加事件”,“删除”和“更新按钮来处理程序,现在我剩下的就是”保存“和”加载“键。我想要做的是找到一种方法来保存DataGridView,以便以后使用“load”键在程序中打开它。如果更容易删除“加载”并将信息保存到事件提醒应用程序中,我可以走那条路线,但我不知道如何做到这一点。这就是我现在对主窗体中的代码所拥有的:

Public Class MainForm1

Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick

    If DataGridView1.Columns(e.ColumnIndex).Name = "Delete" AndAlso Me.DataGridView1.Rows(e.RowIndex).IsNewRow = False Then
        Me.DataGridView1.EndEdit()
        Me.DataGridView1.Rows.RemoveAt(e.RowIndex)
    End If

    If DataGridView1.Columns(e.ColumnIndex).Name = "Column4" AndAlso Me.DataGridView1.Rows(e.RowIndex).IsNewRow = False Then
        Dim Update As UpdateWindow
        Update = UpdateWindow
        Update.Show()
    End If
End Sub

Private Sub dltBtn_Click(sender As Object, e As EventArgs)
    Dim dltBtn As dltWindow
    dltBtn = dltWindow
    dltBtn.Show()
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim Button1 As addBtn
    Button1 = addBtn
    Button1.Show()
End Sub

Private Sub UptBtn_Click(sender As Object, e As EventArgs)
    Dim UptBtn As UpdateWindow
    UptBtn = UpdateWindow
    UptBtn.Show()
End Sub

Dim thisFilename As String = Application.StartupPath & "\Event reminder.dat"

Private Sub saveBtn_Click(sender As Object, e As EventArgs) Handles saveBtn.Click
    Me.Validate()
    Me.SaveGridData(DataGridView1, thisFilename)
End Sub

Private Sub BtnLoad_Click(sender As Object, e As EventArgs) Handles BtnLoad.Click
    Me.LoadGridData(DataGridView1, thisFilename)
End Sub

Private Sub SaveGridData(ByRef ThisGrid As DataGridView, ByVal thisFilename As String)
    ThisGrid.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText
    ThisGrid.SelectAll()
    IO.File.WriteAllText(thisFilename, ThisGrid.GetClipboardContent().GetText.TrimEnd)
    ThisGrid.ClearSelection()
End Sub

Private Sub LoadGridData(ByRef ThisGrid As DataGridView, ByVal Filename As String)
    ThisGrid.Rows.Clear()
    For Each THisLine In My.Computer.FileSystem.ReadAllText(Filename).Split(Environment.NewLine)
        ThisGrid.Rows.Add(Split(THisLine, " "))
    Next
End Sub

结束班

我已经离开了其他论坛并询问了如何执行此操作,并且他们都说将datagridview绑定到数据表。如果这是我必须走的路线,我该怎么办呢?如果有人有一些我可以尝试的例子或代码,我会非常感激。

1 个答案:

答案 0 :(得分:0)

我在发布的代码中看到的问题是在LoadGridDataSaveGridData方法之间。当LoadGridData方法运行时,它会读取一个文件,其中每行在空格“”上“拆分”。这很好,如果文件正确地“空格”分隔,它按预期工作。因此,让我们假设一切正常,数据在网格中正确显示。

然后用户按下调用saveBtn方法的SaveGridData。代码似乎“选择”DataGridView中的所有单元格到剪贴板,然后继续将剪贴板文本写入加载网格时使用的SAME文件名。这也似乎按预期工作。

这个问题是当代码将DataGridView的所有单元格复制到剪贴板时,写下这个复制的剪贴板文本;它将使用“Tab”分隔符。使用“空格”分隔符读入的文件Event reminder.dat将被“制表符”分隔符覆盖,而不是“空格”分隔符。因此,下次运行load方法时......它将失败。

如果加载和保存按钮要读取同一个文件,那么它们必须同意将哪个字符用作分隔符。您可以使用任何想要的字符作为分隔符。您可以使用“空格”作为已发布的代码,但是这会将每种类型限制为不带空格的字符串。如果其中一个字段是家庭地址,则机会很好,字符串中会有一个空格。使用“空格”作为分隔符不一定是最好的选择。

当前代码提供了一个简单的解决方案。目前,如果文件Events reminder.dat是空格分隔的并且正确读入数据网格视图,那么应该很容易用其他东西替换空格分隔符。在这种情况下,由于SaveGridData方法使用“制表符”分隔字段,因此我们只需要在读取文件时将“加载”方法更改为“分页”而不是“空格”。 / p>

第1步 - 制作Events reminder.dat

的副本

步骤2 - 运行程序,按下加载按钮,确保所有数据都正确加载到网格中。

步骤3 - 如果数据在网格中正确显示,请按保存按钮。 (使用制表符分隔符更新文件)

步骤4 - 退出程序并在LoadGridData方法中进行以下更改。

ThisGrid.Rows.Add(Split(THisLine, vbTab))

第5步 - 运行程序。现在加载和写入方法都同意使用什么字符(Tab)作为分隔符。

最后,要评论使用DataTable答案是肯定的。 DatagridViewDataTable很好地融合在一起。希望这会有所帮助。

您可能需要使用“Tour” Stackoverflow来查看它是如何工作的。