我有一个下拉列表,需要根据另一个下拉列表的选择加载特定值。我尝试使用DISTINCT
设置从sql执行此操作,但这不会返回正确的值:
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
值填充下拉列表,其中Value = "#hssCombo"
位于Value = search
,而不是{{1}},如同在select语句中一样
答案 0 :(得分:0)
您可以使用以下XPath选择值:
// P / PARAM [@Value = '#hssCombo'] / @名称
XPath是查询XML文档的标准方法,因此值得学习。大多数XML工具都支持XPath,包括.NET和XSLT。这是路径部分的含义:
//p
- p
是我们正在寻找的元素的名称。双斜杠表示元素可以出现在文档中的任何位置。如果我们只想包含发生在根的p
元素,我们可以使用单个斜杠使其成为绝对路径。/param
- 指定p
元素[@Value='#hssCombo']
- 指定条件。仅包含与条件匹配的//p/param
个元素。在这种情况下,条件指定Value
元素的param
属性必须等于#hssCombo
。 @
符号表示Value
是一个属性,而不是子元素名称。/@Name
- 指定我们对Name
元素的param
属性的值感兴趣。如果您使用的是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
课程,则还可以使用XPathEvaluate
,XPathSelectElement
和XPathSelectElements
方法选择XPath。