【发布时间】:2014-12-18 08:05:39
【问题描述】:
这是我第一次在这里发帖,我绝对是 VB.NET 的新手,所以如果我做错了什么,请原谅我。
我正在尝试创建一个简单的 GUI 来更新我们用于登录脚本的驱动器映射的 XML。如果这是执行登录脚本的不好方法,请不要 cmets。
我有一个表单,上面有一个组合框和数据网格。我需要做的是用我已经完成的 OU 名称值填充组合框。现在我无法完成的是使用每个 OU 的映射填充 DataGrid。我想不通的是,当我将 XML 读入数据集时,它会创建两个表、OU 和映射。我想做的是,当我从 ComboBox 中选择一个 OU 时,让它仅使用来自该 OU 的映射填充 DataGrid。两个表中有一个共同的 OU_Id 字段。我认为这应该像对两个表的选择查询一样简单,但对于我的生活,我无法弄清楚如何完成。请帮帮我。
这是 XML 文件的格式。
<OUs>
<OU name="ABC - NYO">
<mapping path="" drive="F:"/>
<mapping path="\\nyopr901\apps_prod" drive="G:"/>
<mapping path="" drive="I:"/>
<mapping path="" drive="J:"/>
<mapping path="" drive="K:"/>
<mapping path="" drive="L:"/>
<mapping path="" drive="M:"/>
</OU>
<OU name="ABC - CAL">
<mapping path="" drive="F:"/>
<mapping path="\\nyopr901\apps_prod" drive="G:"/>
<mapping path="" drive="I:"/>
<mapping path="" drive="J:"/>
<mapping path="" drive="K:"/>
<mapping path="" drive="L:"/>
<mapping path="" drive="M:"/>
</OU>
</OUs>
这是我目前的代码。
Public Class frmLoginScriptMaintenance
Public dsDM As New DataSet()
Private Sub frmLoginScriptMaintenance_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' Read in XML from file
DriveMappings()
For i = 0 To dsDM.Tables("OU").Rows.Count - 1
ComboBox1.Items.Add(dsDM.Tables("OU").Rows(i).Item(1))
Next
' Bind DataSet to Data Grid
'grdData.DataMember = "mapping"
'grdData.DataSource = dsPubs
End Sub
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
Dim dsDrives As New DataSet()
Dim expression As String
' Read in XML from file
' Bind DataSet to Data Grid
**THIS IS WHERE I AM GOING WRONG**
grdData.DataMember = "mapping"
grdData.DataSource = dsDM.Tables(1).Select(**NOT SURE WHAT SHOULD GO HERE**)
End Sub
Public Function DriveMappings() As DataSet
dsDM.ReadXml("DriveMappings.xml")
Return dsDM
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
End Sub
End Class
【问题讨论】: