CAML 查询空超链接字段导致列表不显示
CAML Query Null Hyperlink Field Causes list to not appear
我的列表有两个超链接字段,所有新项目都会填写这两个字段,但我必须添加的一些旧项目不会同时填写这两个字段。首先,我添加了一些最近的项目,这些项目都有两个超链接来测试我的 CAML 查询是否有效,并且确实如此。直到我添加了一个没有填写两个超链接字段的项目。
我试过在字段中添加空格,但没有用。
我的查询:
var hclientContext = new SP.ClientContext.get_current();
var hList = hclientContext.get_web().get_lists().getByTitle('HRReportsList');
// New caml for getting list based on view
var camlQueryHR = new SP.CamlQuery();
camlQueryHR.set_viewXml('<View Scope="RecursiveAll"><Query><Where><And><Eq><FieldRef Name="Year"/>' +
'<Value Type="Text">2019</Value></Eq><Eq><FieldRef Name="Report_x0020_Type"/>' +
'<Value Type="Choice">Turnover</Value></Eq></And></Where>' +
'<OrderBy><FieldRef Name="YYYYMM" Ascending="False" /></OrderBy>' +
'</Query><RowLimit>50</RowLimit><QueryOptions>' +
'<ViewAttributes Scope="Recursive" /></QueryOptions></View>');
this.hcollListItem = hList.getItems(camlQueryHR);
// end of caml for list view
//this.ncollListItem = nList.getItems("");
hclientContext.load(hcollListItem);
hclientContext.executeQueryAsync(
Function.createDelegate(this, this.onQuerySucceeded),
Function.createDelegate(this, this.onQueryFailed)
);
}
为了获取物品我有一些HTML,例如:
hListItem.get_item('InfographicLink').get_description() + '</a></br></br>' +
'<a href="' + hListItem.get_item('ReportLink').get_url() + '" target="_blank">' +
hListItem.get_item('ReportLink').get_description() + '</a></div>';
控制台中的错误是:“无法获取未定义或空引用的 属性 'get_url'”
不足为奇,我只是不知道如何让它工作,因为我知道我需要允许一些超链接为空。
对这两个超链接字段添加检查,确保它们不为 null,如下所示:
while (listItemEnumerator.moveNext())
{
var hListItem = listItemEnumerator.get_current();
if(hListItem.get_item("ReportLink") && hListItem.get_item("InfographicLink"))
{
listItemInfo += hListItem.get_item('InfographicLink').get_description() + '</a></br></br>' +
'<a href="' + hListItem.get_item('ReportLink').get_url() + '" target="_blank">' +
hListItem.get_item('ReportLink').get_description() + '</a></div>';
}
}
这里有个类似的问题供大家参考:
我的列表有两个超链接字段,所有新项目都会填写这两个字段,但我必须添加的一些旧项目不会同时填写这两个字段。首先,我添加了一些最近的项目,这些项目都有两个超链接来测试我的 CAML 查询是否有效,并且确实如此。直到我添加了一个没有填写两个超链接字段的项目。
我试过在字段中添加空格,但没有用。
我的查询:
var hclientContext = new SP.ClientContext.get_current();
var hList = hclientContext.get_web().get_lists().getByTitle('HRReportsList');
// New caml for getting list based on view
var camlQueryHR = new SP.CamlQuery();
camlQueryHR.set_viewXml('<View Scope="RecursiveAll"><Query><Where><And><Eq><FieldRef Name="Year"/>' +
'<Value Type="Text">2019</Value></Eq><Eq><FieldRef Name="Report_x0020_Type"/>' +
'<Value Type="Choice">Turnover</Value></Eq></And></Where>' +
'<OrderBy><FieldRef Name="YYYYMM" Ascending="False" /></OrderBy>' +
'</Query><RowLimit>50</RowLimit><QueryOptions>' +
'<ViewAttributes Scope="Recursive" /></QueryOptions></View>');
this.hcollListItem = hList.getItems(camlQueryHR);
// end of caml for list view
//this.ncollListItem = nList.getItems("");
hclientContext.load(hcollListItem);
hclientContext.executeQueryAsync(
Function.createDelegate(this, this.onQuerySucceeded),
Function.createDelegate(this, this.onQueryFailed)
);
}
为了获取物品我有一些HTML,例如:
hListItem.get_item('InfographicLink').get_description() + '</a></br></br>' +
'<a href="' + hListItem.get_item('ReportLink').get_url() + '" target="_blank">' +
hListItem.get_item('ReportLink').get_description() + '</a></div>';
控制台中的错误是:“无法获取未定义或空引用的 属性 'get_url'”
不足为奇,我只是不知道如何让它工作,因为我知道我需要允许一些超链接为空。
对这两个超链接字段添加检查,确保它们不为 null,如下所示:
while (listItemEnumerator.moveNext())
{
var hListItem = listItemEnumerator.get_current();
if(hListItem.get_item("ReportLink") && hListItem.get_item("InfographicLink"))
{
listItemInfo += hListItem.get_item('InfographicLink').get_description() + '</a></br></br>' +
'<a href="' + hListItem.get_item('ReportLink').get_url() + '" target="_blank">' +
hListItem.get_item('ReportLink').get_description() + '</a></div>';
}
}
这里有个类似的问题供大家参考: