我有一个列表,可以查找另一个表以获取该数据的值。我可以直接查询表,它会返回我想要的数据。我有另一个表,它使用前一个表作为其中字段的选择。我已经查询了表中使用查找表的所有字段,与该查找对应的字段是查找表的两个数据字段,由分号和哈希符号分隔。我一直在尝试格式化 CAML 查询,以根据该表中的字段过滤使用查找表的表中的数据,并从中获取另一个字段。抱歉,这真的很难解释,但也许在你看到我的代码之后,你会看到我想要得到的东西。
如果我像这样对查找表进行查询:
<body>
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="jquery.SPServices-0.7.1a.js"></script>
var ViewFields = "<ViewFields>" +
"<FieldRef Name='Title' />" +
"<FieldRef Name='Column_x0020_Number' Type='Number' />" +
"</ViewFields>";
$(document).ready(function() {
$().SPServices({
operation: "GetListItems",
async: false,
listName: "Categories",
CAMLViewFields: ViewFields,
completefunc: function (xData, Status) {
$(xData.responseXML).SPFilterNode("z:row").each(function() {
var categoryHtml = "<td>" + $(this).attr("ows_Title") + "</td>";
var columnNumHtml = "<td>" + Math.round($(this).attr("ows_Column_x0020_Number")) + "</td>";
var addRow = "<tr>" + categoryHtml + columnHtml + "</tr>";
$("#Categories").append(addRow);
});
}
});
});
</script>
<table border="1" id="Categories" />
</body>
我得到的回报如下:
第 1 类 1 类 2 类 2 ....
所以,它正在工作。这是从中获取查找的表。
接下来我们有代码尝试从问题表中获取数据:
var ViewFields = "<ViewFields>" +
"<FieldRef Name='Title' />" +
"<FieldRef Name='Category_x0020_Name' />" +
"<FieldRef Name='Amount' Type='Number' />" +
"<FieldRef Name='Question' />" +
"<FieldRef Name='Answer' />" +
"</ViewFields>";
$().SPServices({
operation: "GetListItems",
async: false,
listName: "Categories",
CAMLViewFields: ViewFields,
completefunc: function (xData, Status) {
$(xData.responseXML).SPFilterNode("z:row").each(function() {
var titleHtml = "<td>" + $(this).attr("ows_Title") + "</td>";
var categoryNameHtml = "<td>" + $(this).attr("ows_Category_x0020_Name")) + "</td>";
var nameHtmlSplitString = categoryNameHtml.split(";#");
var categoryNumString = "<td>" + nameHtmlSplitString[0] + "</td>";
var categoryNameString = "<td>" + nameHtmlSplitString[1] + "</td>";
var amount = "<td>" + Math.round($(this).attr("ows_Amount)) + "</td>";
var question = "<td>" + $(this).attr("ows_Question) + "</td>";
var categoryNumString = "<td>" + $(this).attr("ows_Answer) + "</td>";
var addRow = "<tr>" + titleHtml + categoryNameHtml + categoryNameString + categoryNumString + amountHtml + questionHtml + answerHtml + "</tr>";
$("#Questions").append(addRow);
});
}
});
});
</script>
<table border="1" id="Questions" />
这回来相当不错:
Cat1 问题 1|1;#Cat1|1|Cat1|100|(问题 1.1)|(答案 1.1)
Cat1 问题 2|1;#Cat1|1|Cat1|200|(问题 1.2)|(答案 1.2)
Cat1 问题 3|1;#Cat1|1|Cat1|300|(问题 1.3)|(答案 1.3)
Cat1 问题 4|1;#Cat1|1|Cat1|400|(问题 1.4)|(答案 1.4)
Cat1 问题 5|1;#Cat1|1|Cat1|500|(问题 1.5)|(答案 1.5)
Cat2 问题 1|2;#Cat2|2|Cat2|100|(问题 2.1)|(答案 2.1)
Cat2 问题 2|2;#Cat2|2|Cat2|200|(问题 2.2)|(答案 2.2)
Cat2 问题 3|2;#Cat2|2|Cat2|300|(问题 2.3)|(答案 2.3)
Cat2 问题 4|2;#Cat2|2|Cat2|400|(问题 2.4)|(答案 2.4)
Cat2 问题 5|2;#Cat2|2|Cat2|500|(问题 2.5)|(答案 2.5)
Cat3 问题 1|3;#Cat3|3|Cat3|100|(问题 3.1)|(答案 3.1)
Cat3 问题 2|3;#Cat3|3|Cat3|200|(问题 3.2)|(答案 3.2)
……
所以这几乎没问题,除了 "1;#Cat1" 返回。我显然可以很好地解析它们,但是现在,当我尝试编写查询时:
var Query = "<Query>" +
" <Where>" +
" <Eq>" +
" <FieldRef Name='Category_x0020_Name' />" +
" <Value Type='Text'>" +
" 2;#Cat2" +
" </Value>" +
" </Eq>" +
" </Where>" +
"</Query>";
我在 SPServices 中应用它
...
listName: "Categories",
CAMLViewFields: ViewFields,
CAMLQuery: Query,
completefunc: function (xData, Status) {
....
我什么都得不到。
有什么建议如何处理下拉数据?