我想选择一个父亲拥有id = xx的项目。
我正在使用此查询:
var mainSectionItem =
Sitecore.Context.Item.Axes.SelectSingleItem("./ancestor::*[@@parentid = '{E3C35E4C-B3D9-4153-B53E-E4004E76D768}']");
但我得到了空。在上面的代码中,当我将@@parentid
更改为@@id
时,我获得了MainItem。只是为了澄清这是我正在做的事情:
从A1或A2我想得到A,如果上下文项是B1或B2,我想得到项B.这只是一个例子,树可以更深。
答案 0 :(得分:0)
我不记得正确的Xpath语法,但可能类似于:
(pageID:3 Key:18)
"./../[./../../[@id = '{E3C35E4C-B3D9-4153-B53E-E4004E76D768}']]"
使用[]作为" if语句",
./../ <-- one step up ( A / B )
所以基本上,如果父节点的当前节点是X,则选择当前节点父节点。
语法正确关闭,但心态可能有所帮助。祝你好运
答案 1 :(得分:0)
正如Gatogordo在评论中所说,Sitecore查询语言没有dashboard.controller('excelreportController',function($scope,$html){
$scope.inverters = [
{
"InvDetails": "UPS",
"LstRecords": [
{
"Id": 1,
"Invertor_Id": 1,
"Time_of_Reading": "20170214",
"Lastreading": 0,
"Readingby": 0
},
{
"Id": 87,
"Invertor_Id": 1,
"Time_of_Reading": "20170215",
"Lastreading": 5,
"Readingby": 10
},
{
"Id": 110,
"Invertor_Id": 1,
"Time_of_Reading": "20170216",
"Lastreading": 10,
"Readingby": 92
},
{
"Id": 111,
"Invertor_Id": 1,
"Time_of_Reading": "20170216",
"Lastreading": 92,
"Readingby": 95
}
]
},
{
"InvDetails": "Power Supply",
"LstRecords": [
{
"Id": 2,
"Invertor_Id": 2,
"Time_of_Reading": "20170214",
"Lastreading": 0,
"Readingby": 0
},
{
"Id": 88,
"Invertor_Id": 2,
"Time_of_Reading": "20170215",
"Lastreading": 7,
"Readingby": 13
},
{
"Id": 109,
"Invertor_Id": 2,
"Time_of_Reading": "20170216",
"Lastreading": 13,
"Readingby": 25
},
{
"Id": 112,
"Invertor_Id": 2,
"Time_of_Reading": "20170216",
"Lastreading": 25,
"Readingby": 49
}
]
}
];
$scope.exportData = function () {
var data = "";
$scope.headers = [];
angular.forEach($scope.inverters, function (value, key) {
var we = value.InvDetails;
$scope.headers.push(we);
$scope.last = value.LstRecords;
angular.forEach($scope.last, function (value, key) {
data = {
"Id": value.Id,
"Invertor_Id": value.Invertor_Id,
"Time_of_Reading": value.Time_of_Reading,
"Lastreading": value.Lastreading,
"Readingby": value.Readingby
};
})
})
$scope.result = [];
$scope.result0 = [];
$scope.result.push({
"Invertor": JSON.stringify(data)
})
alasql('SELECT * INTO XLSX("john.xlsx",{headers:true}) FROM ?', [$scope.result]);
};
的特殊属性。您可以使用@@parentid
作为轴,但与您对XPath的期望相比,它的行为很奇怪,所以我倾向于避免使用它。
匹配我所知道的项目的核心属性的有效选项是:
“查找合适的父项”最常见的模式可能是根据其模板找到正确的项目。通过模板查找内容可以使您的代码更加灵活 - 如果特定项目被销毁并重新创建(这将更改其ID),并且如果使用相同模板创建新内容,它将继续工作。
您的查询可能类似于parent::
- 但假设A和B具有不同的模板。如果它们都具有相同的模板,则可以删除第二个ancestor::*[@@templateid='{template-guid-for-A-here}' or @@templateid='{template-guid-for-B-here}']
子句。 (或者,如果您愿意,也可以在此处使用@@templateid
)如果您希望查询能够处理A&amp; B项目以及Ax&amp; Bx,您也可以在此处使用@@templatename
轴。