将 XML 用作 datagridview 源
一篇关于将 datagridview 与 XML 文件链接的文章

引言
如您所知,XML 是一种多用途语言,由万维网联盟 (W3C) 推荐。它是免费的,我们可以在许多应用程序中读取它。在本文中,我想告诉您 DataGridView
和 XML 文件之间的连接。通常,我们使用从 SQL Server 数据库、Oracle、MySQL 或任何其他数据库获得的表的 DataSource
。这次,我想介绍一些不同的东西。我相信你们中的一些人已经知道这种方法,但我认为发布这篇文章对初学者来说是可以的。与其使用常见的数据库语言,不如尝试使用 XML。
Using the Code
那么让我们开始制作一个使用 XML 作为数据库的简单应用程序。您可以在附件中下载的示例使用了一个表,我将其命名为 User
。该表由两列组成,一列名为 user_name
,另一列名为 user_password
。
首先,您可以查看下面我用作 DataSource
的 user.xml 的格式
<?xml version="1.0" standalone="yes"?>
<Table>
<User>
<user_name>admin</user_name>
<user_password>indrapr</user_password>
</User>
<User>
<user_name>user</user_name>
<user_password>indrapr</user_password>
</User>
</Table>
在 XML 中,我们需要像树一样构建结构。它从根 (Table
) 开始,然后是父级 (User
),然后是子级 (user_name
, user_password
)。从上面的结构中,我们知道我们有一个包含两列数据和两行数据的表。
当我们通过加载事件执行我们的代码时,程序将检查 XML 文件是否存在。如果不存在,我们应该创建一个空表。我创建了一个函数,如下所示。我创建了 2 个参数,TableName
和 ColumnNames
,我将其声明为 ParamArray
。如果您不了解这种类型,ParamArray
是一种可以捕获多值的参数。好的,回到主题。当程序知道我们没有该文件时,它将调用此函数。这将创建树形结构的 XML,并具有一个空字符串值,仅用作初始化。
Private Function CreateEmptyTable(ByVal TableName As String, _
ByVal ParamArray ColumnNames() As String) As Boolean
Dim writer As New XmlTextWriter(filePath, System.Text.Encoding.UTF8)
Try
writer.WriteStartDocument(True)
writer.Formatting = Formatting.Indented
writer.Indentation = 2
writer.WriteStartElement("Table")
writer.WriteStartElement(TableName)
For Each ColumnName As String In ColumnNames
writer.WriteStartElement(ColumnName)
writer.WriteString(String.Empty)
writer.WriteEndElement()
Next
writer.WriteEndElement()
writer.WriteEndElement()
writer.WriteEndDocument()
writer.Close()
Catch ex As Exception
MsgBox("Cannot create new table.")
Return False
End Try
Return True
End Function
然后在运行上面的验证后,我们将读取 XML 的内容,并将其作为我们窗体中 DataGridView
的 DataSource
。
xmlFile = XmlReader.Create(filePath, New XmlReaderSettings())
ds.ReadXml(xmlFile)
xmlFile.Close()
Me.DgvMstUser.DataSource = ds.Tables(0)
对于上面代码的解释,我们基于之前拥有的文件的内容创建 xmlFile
。然后读取它并将其保存到 dataset
中。请记住关闭 xmlFile
,否则会出现错误,提示该文件当前正被另一个应用程序使用。在我们获得 dataset
后,我们调用里面的第一个表。由于我们只有一个表,并且我们想调用第一个表,我们使用 DataSet
上的命令 .Tables(0)
来调用它。
运行它,你就会得到一个带有 XML datasource
的 DataGridView
。现在下一步是什么?在我们选择数据后,你如何更新数据?您可以使用我下面提供的简单命令。
Dim dt As New DataTable
dt = Me.DgvMstUser.DataSource
dt.WriteXml(filePath)
我们创建一个新的 DataTable
对象,从 DataGridView
获取 DataSource
表,并将其写成 XML。
就这样。恭喜你,你已经制作了一个使用 XML 数据库的简单应用程序。如果您对此文章有任何疑问,请随时给我发电子邮件或发表您的评论。
历史
- 2009 年 1 月 15 日:首次发布