0

我有一个下拉列表,需要根据另一个下拉列表的选择加载特定值。我尝试使用 set 从 sql 执行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 whereValue = "#hssCombo"或者更确切地说 whereValue = search在 select 语句中的值填充下拉列表

4

1 回答 1

0

您可以使用以下 XPath 选择值:

//p/param[@Value='#hssCombo']/@Name

XPath 是查询 XML 文档的标准方法,因此值得学习。大多数 XML 工具都支持 XPath,包括 .NET 和 XSLT。以下是路径部分的含义:

  • //p-p是我们正在寻找的元素的名称。双斜杠表示该元素可以出现在文档中的任何位置。如果我们只想包含p出现在根目录的元素,我们可以使用一个斜杠使其成为绝对路径。
  • /param- 指定元素下的子p元素
  • [@Value='#hssCombo']- 指定一个条件。只有//p/param符合条件的元素才会被包括在内。在这种情况下,条件指定元素的Value属性必须等于。该符号表示这是一个属性,而不是子元素名称。param#hssCombo@Value
  • /@Name- 指定我们对元素的Name属性值感兴趣。param

如果您正在使用XmlDocument该类,则可以使用SelectSingleNodeandSelectNodes方法选择具有 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该类,您还可以使用 XPath 使用XPathEvaluateXPathSelectElementXPathSelectElements方法进行选择。

于 2013-04-04T14:56:19.590 回答