我想在sharepoint列表中自定义添加新项目表单以提取查询字符串参数并自动将其设置为新项目中的查找字段之一。我在Sharepoint 2010中的Sharepoint Designer 2010中找到了一个完美的教程(http://www.codeproject.com/Articles/194253/How-to-Customize-the-New-Item-form-to-take-paramet),但在2013年删除了设计模式,因此教程没有多大用处。
所以基本上我要问的是如何在Sharepoint Designer 2013中提取查询字符串值?
答案 0 :(得分:3)
除了自定义列表视图&通过XSLT表单,SharePoint 2013引入了客户端呈现(CSR)技术。作为介绍,请点击这篇文章Introduction to Client Side Rendering in SharePoint 2013。
由于CSR是SharePoint 2013中的默认呈现模式,因此我建议使用此方法来自定义新表单页面。
假设一个包含Task Category
查找字段的任务列表。
然后,可以使用以下呈现模板来设置从名为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
}
关键点:
LookupId
GetUrlKeyValue
是一个适用于SharePoint的特定功能
从查询字符串中提取参数为了应用更改,我们需要设置XLV Web部件的JSLink
属性:
Tasks.js
。然后将指定的内容上传到SharePoint Site Assets
库Miscellaneous
组JSLink
属性下找到并指定其值:
~sitecollection/SiteAssets/Task.js
如下图所示
答案 1 :(得分:0)
你应该能够轻松地做到这一点,但使用javascript。在新表单中添加js引用。
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));}
$(document).ready(function(){
var paramVal = getParameterByName('ParamName');
$(".ms-formbody input[title='Title']").val(paramVal);
});