使用sharepoint设计器在sharepoint list视图页面上的caml查询中使用javascript变量或函数

时间:2016-12-01 09:38:00

标签: javascript listview sharepoint-2013 sharepoint-designer caml

我正在尝试将自定义JavaScript变量或函数放入sharepoint列表视图页面,使用sharepoint designer

在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>

有可能吗?

1 个答案:

答案 0 :(得分:0)

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