[译]使用JavaScript来操纵数据视图DataView新建视图的默认值
原文链接:http://blogs.msdn.com/sharepointdesigner/archive/2007/06/13/using-javascript-to-manipulate-a-list-form-field.aspx
为什么要这样做?
很多人抱怨经过SharePoint Designer设计的数据视图不够智能化,其中之一就是:SPD没有办法来设定字段的默认值,当然我们可以通过SharePoint中的WEB界面来设定某个列表中的字段的默认值,但是那样做的话,只能设置固定的值。比如我想设计一个表单,这个表单有一栏叫做“审批人”,系统根据用户在前一个页面的选择来产生的一个URL查询参数。
比如http://www.server.com/page.aspx?RequestName=RequestValue,这样来设置“审批人”的值为RequestValue。
机制:
首先,找到这个字段的HTML控件的ID,然后对这个控件进行设置。SharePoint对视图中的字段的渲染的特点如下表:
此外,最重要的是,字段的Title属性等于字段的“友好名称”,比如第一段提到的,“审批人”系统在渲染这个控件时,这个HTML的控件就TITLE就为“审批人”。
然后,再设置这个控件的值为URL查询参数的值。
特别:对于查阅项如果超过20个,那么Select标记会被系统内的INPUT标记包复,应先使用DropDown这个方法把包复的控件展开。
把文中的
<<QUERYSTRING VARIABLE NAME>> 换你传递的查询字串,
<<FIELD DISPLAY NAME>>换成你字段的中英文名称就OK了。
然后 通过SPD把下面的代码插入你页面的HTML中去。
// This javascript sets the default value of a lookup field identified
// by <<FIELD DISPLAY NAME>> to the value stored in the querysting variable
// identified by <<QUERYSTRING VARIABLE NAME>>
// Customize this javascript by replacing <<FIELD DISPLAY NAME>> and
// <<QUERYSTRING VARIABLE NAME>> with appropriate values.
// Then just paste it into NewForm.aspx inside PlaceHolderMain
_spBodyOnLoadFunctionNames.push("fillDefaultValues");
function fillDefaultValues() {
var qs = location.search.substring(1, location.search.length);
var args = qs.split("&");
var vals = new Object();
for (var i=0; i < args.length; i++) {
var nameVal = args[i].split("=");
var temp = unescape(nameVal[1]).split('+');
nameVal[1] = temp.join(' ');
vals[nameVal[0]] = nameVal[1];
}
setLookupFromFieldName("<<FIELD DISPLAY NAME>>", vals["<<QUERYSTRING VARIABLE NAME>>"]);
}
function setLookupFromFieldName(fieldName, value) {
if (value == undefined) return;
var theSelect = getTagFromIdentifierAndTitle("select","Lookup",fieldName);
// if theSelect is null, it means that the target list has more than
// 20 items, and the Lookup is being rendered with an input element
if (theSelect == null) {
var theInput = getTagFromIdentifierAndTitle("input","",fieldName);
ShowDropdown(theInput.id); //this function is provided by SharePoint
var opt=document.getElementById(theInput.opt);
setSelectedOption(opt, value);
OptLoseFocus(opt); //this function is provided by SharePoint
} else {
setSelectedOption(theSelect, value);
}
}
function setSelectedOption(select, value) {
var opts = select.options;
var l = opts.length;
if (select == null) return;
for (var i=0; i < l; i++) {
if (opts[i].value == value) {
select.selectedIndex = i;
return true;
}
}
return false;
}
function getTagFromIdentifierAndTitle(tagName, identifier, title) {
var len = identifier.length;
var tags = document.getElementsByTagName(tagName);
for (var i=0; i < tags.length; i++) {
var tempString = tags[i].id;
if (tags[i].title == title && (identifier == "" || tempString.indexOf(identifier) == tempString.length - len)) {
return tags[i];
}
}
return null;
}
</script>
[译]使用JavaScript来操纵数据视图DataView新建视图的默认值相关推荐
- C#使用OleDB操作ACCESS插入数据时提示:参数 @p_Contract 没有默认值
C#使用OleDB操作ACCESS插入数据时提示:参数 @p_Contract 没有默认值 OleDbParameter param = new OleDbParameter("" ...
- 下拉选数据查询过来的如何设置默认值为空_如何在某些情况下禁止提交Select下拉框中的默认值或者第一个值(默认选中的就是第一个值啦……)...
群里有个帅哥问了这么个问题,他的下拉框刚进页面时是隐藏起来的,但是是有值的,为啥呢?因为下拉框默认选中了第一个值呗,,, 所以提交数据的时候就尴尬啦,明明没有选,但是还是有值滴.怎么办呢? 一开始看到 ...
- JavaScript中的函数中arguments、参数、默认值和表达式以及箭头函数
箭头函数: 箭头函数虽然语法简洁.但也有很多场合不适用.箭头函数不能使用arguments.super和new.target,也不能用作构造函数.此外箭头函数也没有prototype属性. 1. 函数 ...
- select2 ajax获取数据设置默认值,初始值
select2是一个非常好用的select美化插件,但是在最近使用时发现,select2在使用ajax获取数据内容时设置默认值非常麻烦,官方给出了一个解决方案就是添加一个属性selected的opti ...
- jsp select初始化赋值_分别在javascript和JSP中动态设置下拉列表默认值
一.JavaScript中动态设置select标签中选项的默认值: 比如,要完成下边这个下拉列表的动态显示,并且当进行前后翻页时,下拉列表中的值自动更新为当前页码: 图1 jsp部分代码如下: 图2 ...
- php 使用dataview,echarts如何优化数据视图dataView中的样式(代码示例)
本篇文章给大家带来的内容是关于echarts如何优化数据视图dataView中的样式(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 在使用echart过程中,toolbo ...
- Javascript 处理二进制数据:JavaScript typed arrays
原文中文链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Typed_arrays 原文英文链接:https://developer ...
- JavaScript与二进制数据的恩怨情仇
文章出自个人博客https://knightyun.github.io/2020/03/09/js-binary-data,转载请申明 编程江湖,终日血雨腥风,论及二进制数据,又有多少豪杰谈笑风生,风 ...
- [译] 新一代 JavaScript 的开发图谱(2017)
本文讲的是[译] 新一代 JavaScript 的开发图谱(2017), 原文地址:A Map To Modern JavaScript Development 原文作者:Santiago de Le ...
最新文章
- 12月18日云栖精选夜读 | Java 中创建对象的 5 种方式!...
- 开课吧python课程-Python教父廖雪峰加入开课吧 打造技术品类黄金内容班底
- Java程序练习-字符串插入
- Java OR Android
- 面试离职理由_面试一个月都没有成功,是种什么样的神奇体验?
- 从玉农业蔬菜标准化-林裕豪:致力食品安全和质量管理体系
- session过期情况下ajax请求不会触发重新登录的问题
- 阿里最后一面,高并发下如何设计一个秒杀系统?
- 华为HarmonyOS 2.0全面升级,构建中国软件的“根”!
- django mysql 修改密码_Django更改sqlite数据库使用mysql数据库 - 李金龙
- 一次失败的做题经历(HDU2112)
- 立即释放.net下的com组件
- 内存管理 —— ION
- 【路径规划】基于matlab A_star算法机器人走迷宫路径规划【含Matlab源码 1389期】
- dism 如备份服务器系统,还在用 Ghost?系统备份还原 DISM 超详细使用方法
- sp2 xp 英文版序列号_64位 Windows XP SP2 VOL+简体中文语言包+序列号
- java封装继承多态的理解_深入理解Java面向对象三大特性 封装 继承 多态
- 服务器虚拟化技术有kvm,只用VMware开虚拟机?来了解一下更强大KVM虚拟化技术
- 7.8 W 字总结!Java 8—Java 10 特性详解
- IOS – OpenGL ES 图像侵蚀边缘色彩模糊 GPUImageRGBErosionFilter
热门文章
- 只需2.5W功耗,就能达到5TOPS算力!地平线新一代AIoT芯片「旭日3」发布
- 华为VC首次出手:投资2家半导体公司,带火5G建材“碳化硅”
- 电力系统【第3章:简单电力系统的潮流分布计算】
- 再有人问你Java内存模型是什么,就把这篇文章发给他
- Fragment Injection漏洞杂谈
- 活动目录最佳实践分析器
- Nuget服务的搭建-打包-上传-删除
- “九头虫”病毒技术分析报告
- linux 文件权限的作用,Linux文件与目录权限的意义
- 计算机网络基础 — 网络设备 — 以太交换机(Switch)