使用 Sharepoint 设计器在 Sharepoint 列表视图页面上的 caml 查询中使用 javascript 变量或函数
Using javascript variable or function inside caml query on sharepoint list view page with sharepoint designer
我正在尝试将自定义 JavaScript 变量或函数放入共享点的列表视图页面,在 caml 查询中,使用共享点设计器
例如:
我正在打开我要修改的列表视图。比我添加将在页面加载时执行的自定义 javascript 代码,我想使用从该函数返回的值,在 caml 查询中:
<View Name="{SOMENAME}" MobileView="TRUE" Type="HTML" DisplayName="MyGroups" Url="SOMEURL" Level="1" BaseViewID="2" ContentTypeID="0x" ImageUrl="/_layouts/15/images/issuelst.png?rev=23" >
<Query>
<OrderBy>
<FieldRef Name="ID" Ascending="FALSE"/>
</OrderBy>
<Where>
<Eq>
<FieldRef Name="Group_x0020_Name"/>
<Value Type="Text">BPA</Value>
</Eq>
</Where>
</Query>
<ViewFields>
<FieldRef Name="LinkTitle"/>
</ViewFields>
<RowLimit Paged="TRUE">10</RowLimit>
<Aggregations Value="Off"/>
<JSLink>clienttemplates.js</JSLink>
<XslLink Default="TRUE">main.xsl</XslLink>
<Toolbar Type="Standard"/>
</View>
所以我想把变量或函数放在这里:
<FieldRef Name="Group_x0020_Name"/>
<Value Type="Text">HERE VARIABLE OR JAVASCRIPT</Value>
可能吗?
here 是一篇很棒的文章。但是我现在正在修补的是,无法从视图中正确删除额外的项目。例如:
(function() {
function listPreRender(renderCtx) {
var rows = renderCtx.ListData.Row;
var i = rows.length;
while (i--) {
var del = rows[i]['Group_x0020_Name'] === 'BPA';
if (del) {
rows.splice(rows[i], 1);
}
}
renderCtx.ListData.LastRow = rows.length;
}
function registerListRenderer() {
var context = {};
context.Templates = {};
context.OnPreRender = listPreRender;
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(context);
}
ExecuteOrDelayUntilScriptLoaded(registerListRenderer, 'clienttemplates.js');
})();
有时会从视图中删除项目有时不会。尽管事实上没有项目显示在视图中,但列过滤器仍然可见。这是图片 link
我正在尝试将自定义 JavaScript 变量或函数放入共享点的列表视图页面,在 caml 查询中,使用共享点设计器
例如:
我正在打开我要修改的列表视图。比我添加将在页面加载时执行的自定义 javascript 代码,我想使用从该函数返回的值,在 caml 查询中:
<View Name="{SOMENAME}" MobileView="TRUE" Type="HTML" DisplayName="MyGroups" Url="SOMEURL" Level="1" BaseViewID="2" ContentTypeID="0x" ImageUrl="/_layouts/15/images/issuelst.png?rev=23" >
<Query>
<OrderBy>
<FieldRef Name="ID" Ascending="FALSE"/>
</OrderBy>
<Where>
<Eq>
<FieldRef Name="Group_x0020_Name"/>
<Value Type="Text">BPA</Value>
</Eq>
</Where>
</Query>
<ViewFields>
<FieldRef Name="LinkTitle"/>
</ViewFields>
<RowLimit Paged="TRUE">10</RowLimit>
<Aggregations Value="Off"/>
<JSLink>clienttemplates.js</JSLink>
<XslLink Default="TRUE">main.xsl</XslLink>
<Toolbar Type="Standard"/>
</View>
所以我想把变量或函数放在这里:
<FieldRef Name="Group_x0020_Name"/>
<Value Type="Text">HERE VARIABLE OR JAVASCRIPT</Value>
可能吗?
here 是一篇很棒的文章。但是我现在正在修补的是,无法从视图中正确删除额外的项目。例如:
(function() {
function listPreRender(renderCtx) {
var rows = renderCtx.ListData.Row;
var i = rows.length;
while (i--) {
var del = rows[i]['Group_x0020_Name'] === 'BPA';
if (del) {
rows.splice(rows[i], 1);
}
}
renderCtx.ListData.LastRow = rows.length;
}
function registerListRenderer() {
var context = {};
context.Templates = {};
context.OnPreRender = listPreRender;
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(context);
}
ExecuteOrDelayUntilScriptLoaded(registerListRenderer, 'clienttemplates.js');
})();
有时会从视图中删除项目有时不会。尽管事实上没有项目显示在视图中,但列过滤器仍然可见。这是图片 link