Sql 如何使用Visual Basic从text=value1的XML中填充下拉列表?
我有一个下拉列表,需要根据另一个下拉列表的选择加载特定值。我尝试在sql中使用Sql 如何使用Visual Basic从text=value1的XML中填充下拉列表?,sql,xml,vb.net,drop-down-menu,Sql,Xml,Vb.net,Drop Down Menu,我有一个下拉列表,需要根据另一个下拉列表的选择加载特定值。我尝试在sql中使用DISTINCT集执行此操作,但没有返回正确的值: SELECT DISTINCT RMRP_Label, RMRP_Type FROM Table WHERE RMRP_Type IN (" + search + ") 由于某种原因,它不断更改DropDownList.SelectedItem.Text值。。。 所以我制作了一个XML文档: <p> <param Name = "Intake
DISTINCT
集执行此操作,但没有返回正确的值:
SELECT DISTINCT RMRP_Label, RMRP_Type FROM Table
WHERE RMRP_Type IN (" + search + ")
由于某种原因,它不断更改DropDownList.SelectedItem.Text值。。。
所以我制作了一个XML文档:
<p>
<param Name = "Intake_ID"
Value = "!hssCombo"></param>
<param Name = "Office_ID"
Value = "#hssCombo"></param>
<param Name = "sub_obj"
Value = "%hssCombo"></param>
<param Name = "Svc_ID"
Value = "!hssCombo"></param>
例如,我需要用
Name
值填充下拉列表,从这个xml中value=“#hssCombo”
或者更确切地说,从select语句中的value=search
可以使用以下XPath选择值:
//p/param[@Value='#hssCombo']/@Name
XPath是查询XML文档的标准方法,因此值得学习。大多数XML工具都支持XPath,包括.NET和XSLT。以下是路径部分的含义:
-//p
是我们要查找的元素的名称。双斜杠表示元素可以出现在文档中的任何位置。如果我们只想包含发生在根上的p
元素,我们可以使用一个斜杠将其作为绝对路径p
-指定/param
元素下的子元素p
-指定一个条件。仅包含符合条件的[@Value='#hssCombo']
元素。在这种情况下,条件指定//p/param
元素的param
属性必须等于Value
。#hssCombo
符号表示@
是一个属性,而不是子元素名称值
-指定我们对/@Name
元素的param
属性的值感兴趣Name
XmlDocument
类,则可以使用SelectSingleNode
和SelectNodes
方法选择带有XPath的节点。例如:
Dim node As XmlNode = doc.SelectSingleNode("//p/param[@Value='#hssCombo']/@Name")
If node IsNot Nothing Then
Dim name As String = node.InnerText
End If
显然,正如在SQL示例中一样,您可以动态构建XPath,因为它只是一个字符串,如下所示:
doc.SelectSingleNode("//p/param[@Value='" & search & "']/@Name")
如果您使用的是XDocument
类,还可以使用xpatheevaluate
、XPathSelectElement
和XPathSelectElements
方法使用XPath进行选择