通过QueryString将值传递给NewForm.aspx

Kod*_*ode 1 sharepoint sharepoint-2013

我试图通过查询字符串传递一个值来填充NewForm.aspx列表中的字段.示例:http://example.com/Lists/mylist/Newform.aspx?ID = 3

我被限制使用JavaScript并且必须坚持使用查询字符串.这可能吗?

Vad*_*hev 8

SharePoint JS Library包含GetUrlKeyValue用于提取查询字符串参数的函数,例如:

var itemId = GetUrlKeyValue('ID'); //get Item Id from query string
Run Code Online (Sandbox Code Playgroud)

如何在SharePoint 2013的"新建表单"页面中填充表单字段?

在SharePoint 2013中引入了客户端呈现(CSR)技术,用于自定义列表视图和表单.

由于CSR是SharePoint 2013中的默认呈现模式,因此我建议使用此方法自定义"新建表单"页面以填充表单字段.作为介绍,请按照本文介绍SharePoint 2013中的客户端呈现.

假设任务列表包含任务类别查找字段.然后,可以使用以下呈现模板来设置TaskCategory从名为的查询字符串参数中检索的查找字段值cat:

(function () {
    var ctx = {};
    ctx.Templates = {};
    ctx.Templates.Fields = {
        'TaskCategory': {
            'NewForm': renderTaskCategory
        }
    };
    SPClientTemplates.TemplateManager.RegisterTemplateOverrides(ctx);
})();


function renderTaskCategory(ctx) {
    var catId = GetUrlKeyValue('cat'); //extract cat parameter from a query string 
    ctx.CurrentFieldValue =  catId; //set lookup field value 
    return SPFieldLookup_Edit(ctx); //default template for rendering Lookup field control
}
Run Code Online (Sandbox Code Playgroud)

如何应用更改

为了应用更改,我们需要设置JSLinkXLV Web部件的属性:

  • 首先,让我们保存这个JS模板并命名它Tasks.js.然后将指定的内容上载到SharePoint Site Assets库中
  • 在编辑模式下打开新表单页面并转到Web部件属性
  • Miscellaneousgroup JSLink属性下找到并指定其值: ~sitecollection/SiteAssets/Task.js如下图所示 在此输入图像描述

结果

在此输入图像描述