zoukankan      html  css  js  c++  java
  • [译]使用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对视图中的字段的渲染的特点如下表:
    
    字段类型     ID属性中包括的字串 使用的HTML标记
    Single Line of Text TextField input
    Multiple Lines of Text TextField input
    Number TextField input
    Currency TextField input
    Choice (dropdown) DropDownChoice select
    Lookup (single)* Lookup select
    Lookup (multiple) SelectCandidate; SelectResult select
    Yes/No BooleanField input

    此外,最重要的是,字段的Title属性等于字段的“友好名称”,比如第一段提到的,“审批人”系统在渲染这个控件时,这个HTML的控件就TITLE就为“审批人”。
    然后,再设置这个控件的值为URL查询参数的值。

    特别:对于查阅项如果超过20个,那么Select标记会被系统内的INPUT标记包复,应先使用DropDown这个方法把包复的控件展开。

    把文中的
    <<QUERYSTRING VARIABLE NAME>> 换你传递的查询字串,
     <<FIELD DISPLAY NAME>>换成你字段的中英文名称就OK了。
    然后 通过SPD把下面的代码插入你页面的HTML中去。



    <script type="text/javascript">

     

    // 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 == nullreturn;

      
    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>



  • 相关阅读:
    Redhat6.4安装MongoDBv3.6.3
    windows模糊查询指定进程是否存在
    Linux普通用户不能使用TAB键、上下键
    零基础Python爬虫实现(百度贴吧)
    零基础Python爬虫实现(爬取最新电影排行)
    让bat批处理后台运行,不显示cmd窗口(完全静化)
    根据进程名监控进程(邮件提醒)
    android 开发中,必须要注意的知识点. (持续更新)
    Android上传文件至服务器
    为应用添加多个Activity与参数传递
  • 原文地址:https://www.cnblogs.com/dosboy/p/1094104.html
Copyright © 2011-2022 走看看