javascript - 保存日历项后调用 Javascript

标签 javascript sharepoint csom

我有一个脚本如下:-

function getColorValue(aId,atitle) {
try{
        var clientContext = new SP.ClientContext();
        var oWebsite = clientContext.get_web();
        var oList = oWebsite.get_lists().getByTitle('Item type');
        var oListItem = oList.getItemById(parseInt(aId));
        clientContext.load(oListItem);
        clientContext.executeQueryAsync(function () {            
            var listItem = oListItem;
            var colorname = listItem.get_item('Color_x0020_Name');
            if (typeof colorname != 'undefined') {
                if (colorname != null) {
                    $("div[title$='" + atitle + "']").css("background-color", colorname);
                }
            }
        }, onColorQueryFail);
}
catch(e){

}
}

我需要在每次创建 SharePoint 日历项目后调用此脚本。

有人能帮忙吗?

最佳答案

以下 JavaScript 示例演示了如何注册将在创建日历项后触发的事件:

//custom handler that will be triggered after Calendar item is created
function onEventCreated(){
    alert('Event has been created...');     
}


function registerCalendarEventOnItemCreated(event)
{
    var currentCtx = getCurrentContextInfo();
    var calContainer = SP.UI.ApplicationPages.CalendarInstanceRepository.lookupInstance(currentCtx.ctxId);
    for(var name in calContainer) {
       if(calContainer.hasOwnProperty(name)) {
          var p = calContainer[name];
          if(p instanceof SP.UI.ApplicationPages.CalendarNewFormDialog) { 
              p.get_events().addHandler("newitemcreated",event);  
          }   
       }
     }
}

//get current context info
function getCurrentContextInfo()
{
   var currentListId = new SP.Guid(_spPageContextInfo.pageListId);
   for(var ctxKey in g_ctxDict){
     var curCtx = g_ctxDict[ctxKey];
     if(curCtx.listName == currentListId.toString()){
        return curCtx; 
     }
   }
   return null;
}  



//register Calendar events 
$('body').on('click', 'div#AsynchronousViewDefault_CalendarView', function() {
    registerCalendarEventOnItemCreated(onEventCreated);
});

Has been tested against SharePoint 2013/Online

在你的例子中函数 getColorValue可以从 onEventCreated 调用,例如:

function onEventCreated(){
    getColorValue (id,title);     
}

如何应用更改

  1. 将页面切换到编辑模式
  2. 添加Script Editor webpart 进入页面。
  3. 将指定的代码用script 包裹起来标记代码到脚本编辑器中,例如:<script type="text/javascript">{JavaScipt code goes here}</script>
  4. 保存页面

结果

enter image description here

关于javascript - 保存日历项后调用 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28628286/

相关文章:

javascript - 如何将输入类型日期的格式设置为 dd-MM-yyyy Angular

Javascript/jQuery 获取所有 url 参数并添加/更改一个

sharepoint-2013 - Sharepoint 2013 - 分类法 - Microsoft.SharePoint.Taxonomy.TaxonomySession.GetTaxonomySession”

javascript - 通过designer 2013添加js以删除sharepoint上的功能区

sharepoint - 调查SharePoint的 "request not found in the TrackedRequests"的根本原因

authentication - 如何使用 CSOM 通过 SharePoint-Online 进行多因素身份验证

SharePoint 错误 : The server does not allow messages larger than 2097152 bytes

javascript - 仅替换 jquery ajax 调用中的片段

javascript - 如何取消由 jQuery 中的 ajaxSubmit() 启动的文件上传?

asp.net - 无法加载文件或程序集 'AjaxControlToolkit'或其依赖项之一。该系统找不到指定的文件