15

我有一个使用过滤器搜索的页面。例如,我有这个代码,

xmlTempResultSearch = xmlResidentListDisplay.selectNodes("//PeopleList/Row[@LastName != '"+txtSearch.value+"']");
xmlTempResultSearch.removeAll();

这将选择不等于在txtSearch文本框中输入的姓氏的数据,然后将它们从结果集中删除,以便将其过滤为等于文本框中的姓氏txtSearch

我对这段代码的问题是它应该等于 (=) 到txtSearch.value,我想要的是我想要结果集LIKEtxtSearch.value。在我的页面上发生的情况是,当我santos在 txtSearch 文本框上键入“”时,其结果集是所有带有“”的姓氏santos。但是当我输入' sant'时,什么都没有出现。我想要与 ' santos' 相同的结果集,因为它都包含 'sant'

4

3 回答 3

17

您可以使用所有 XPath (1.0) 字符串函数。如果您有可用的 XPath 2.0,那么您甚至可以使用 RegEx

contains()

starts-with()

substring()

substring-before()

substring-after()

concat()

translate()

string-length()

XPath 1.0中没有 **ends-with(),但可以很容易地用这个 XPath 1.0 表达式表示**:

substring($s, string-length($s) - string-length($t) +1) = $t

正是true()字符串以字符串$s结尾的时候$t

于 2012-09-19T04:59:56.107 回答
5

您可以使用 start-with 函数而不是函数。参考:

http://www.w3schools.com/xpath/xpath_functions.asp

xmlTempResultSearch = xmlResidentListDisplay.selectNodes("//PeopleList/Row[not(starts-with(@LastName,'"+ txtSearch.value +"'))]");
于 2012-09-19T03:45:51.617 回答
3

您可以使用 XPath 的 contains() 函数:

xmlTempResultSearch = xmlResidentListDisplay.selectNodes("//PeopleList/Row[not(contains(@LastName,'"+txtSearch.value+"'))]");
于 2012-09-19T04:32:38.587 回答