在SharePoint日历中,如何禁用拖拽事件
2012-07-08 14:41
316 查看
Hi all! Based on this sharepoint.stackexchange question.
May be in some reasons you want to disable all drag-and-drop event for your calendar list. I don’t know if it possible through C# code, but it’s possible through javascript. In SP.UI.ApplicationPages.Calendar.js there is a factory method SP.UI.ApplicationPages.CalendarContainerFactory.create.This method creates and initializes instance of calendar using javascript. Among other parameters this function accepts context object that contains initialization info about calendar (cctx object). This object contains property DataSources (Array) and each array element is an object that has property named disableDrag. disableDrag false by default. The main idea is to substitute factory method and pass updated cctx object, that has disableDrag=true for every datasource. Edit page with calendar and add content editor web part. In content past this code:
<script type='text/javascript'>
ExecuteOrDelayUntilScriptLoaded(function(){
var calendarCreate = SP.UI.ApplicationPages.CalendarContainerFactory.create;
SP.UI.ApplicationPages.CalendarContainerFactory.create = function(elem, cctx, viewType, date, startupData) {
if(cctx.dataSources && cctx.dataSources instanceof Array && cctx.dataSources.length > 0){
for(var i = 0; i < cctx.dataSources.length; i++){
cctx.dataSources[i].disableDrag = true;
}
}
calendarCreate(elem, cctx, viewType, date, startupData);
}
}, 'SP.UI.ApplicationPages.Calendar.js');
</script>
or through code (don’t forget about proper disposing):
var site = new SPSite("http://localhost/sites/test/");
var web = site.OpenWeb();
var wpManager = web.GetLimitedWebPartManager("Lists/cal/calendar.aspx", PersonalizationScope.Shared);
var contentEditor = new ContentEditorWebPart();
var xmlDoc = new XmlDocument();
var xmlElement = xmlDoc.CreateElement("HtmlContent");
xmlElement.InnerText = @"<script type='text/javascript'>
ExecuteOrDelayUntilScriptLoaded(function(){
var calendarCreate = SP.UI.ApplicationPages.CalendarContainerFactory.create;
SP.UI.ApplicationPages.CalendarContainerFactory.create = function(elem, cctx, viewType, date, startupData) {
if(cctx.dataSources && cctx.dataSources instanceof Array && cctx.dataSources.length > 0){
for(var i = 0; i < cctx.dataSources.length; i++){
cctx.dataSources[i].disableDrag = true;
}
}
calendarCreate(elem, cctx, viewType, date, startupData);
}
}, 'SP.UI.ApplicationPages.Calendar.js');
</script>";
contentEditor.Content = xmlElement;
wpManager.AddWebPart(contentEditor, "Main", 0);
May be in some reasons you want to disable all drag-and-drop event for your calendar list. I don’t know if it possible through C# code, but it’s possible through javascript. In SP.UI.ApplicationPages.Calendar.js there is a factory method SP.UI.ApplicationPages.CalendarContainerFactory.create.This method creates and initializes instance of calendar using javascript. Among other parameters this function accepts context object that contains initialization info about calendar (cctx object). This object contains property DataSources (Array) and each array element is an object that has property named disableDrag. disableDrag false by default. The main idea is to substitute factory method and pass updated cctx object, that has disableDrag=true for every datasource. Edit page with calendar and add content editor web part. In content past this code:
<script type='text/javascript'>
ExecuteOrDelayUntilScriptLoaded(function(){
var calendarCreate = SP.UI.ApplicationPages.CalendarContainerFactory.create;
SP.UI.ApplicationPages.CalendarContainerFactory.create = function(elem, cctx, viewType, date, startupData) {
if(cctx.dataSources && cctx.dataSources instanceof Array && cctx.dataSources.length > 0){
for(var i = 0; i < cctx.dataSources.length; i++){
cctx.dataSources[i].disableDrag = true;
}
}
calendarCreate(elem, cctx, viewType, date, startupData);
}
}, 'SP.UI.ApplicationPages.Calendar.js');
</script>
or through code (don’t forget about proper disposing):
var site = new SPSite("http://localhost/sites/test/");
var web = site.OpenWeb();
var wpManager = web.GetLimitedWebPartManager("Lists/cal/calendar.aspx", PersonalizationScope.Shared);
var contentEditor = new ContentEditorWebPart();
var xmlDoc = new XmlDocument();
var xmlElement = xmlDoc.CreateElement("HtmlContent");
xmlElement.InnerText = @"<script type='text/javascript'>
ExecuteOrDelayUntilScriptLoaded(function(){
var calendarCreate = SP.UI.ApplicationPages.CalendarContainerFactory.create;
SP.UI.ApplicationPages.CalendarContainerFactory.create = function(elem, cctx, viewType, date, startupData) {
if(cctx.dataSources && cctx.dataSources instanceof Array && cctx.dataSources.length > 0){
for(var i = 0; i < cctx.dataSources.length; i++){
cctx.dataSources[i].disableDrag = true;
}
}
calendarCreate(elem, cctx, viewType, date, startupData);
}
}, 'SP.UI.ApplicationPages.Calendar.js');
</script>";
contentEditor.Content = xmlElement;
wpManager.AddWebPart(contentEditor, "Main", 0);
相关文章推荐
- 教你如何调试sharepoint 文档库事件处理程序,呵呵
- 如何隐藏日历列表的重复和全天事件栏目-方法2
- 如何隐藏日历列表的重复和全天事件栏目
- JS实现60s倒计时(亲测有效),及span标签如何使用和禁用onclick事件
- 如何在ScrollView滑动的瞬间禁用拖拽手势
- 如何禁用事件的浮升(div的子元素的点击事件会触发父元素的点击事件)
- ScrollView里嵌套ListView,如何禁用ListView的滚动事件,或者触发ListView滚动时调用父元素ScrollView的滚动事件?
- [SharePoint 2010]如何定制事件处理程序的Error Pages
- 开发小技巧: 如何在jQuery中禁用或者启用滚动事件.scroll
- 如何禁用magento的事件
- 开发小技巧: 如何在jQuery中禁用或者启用滚动事件.scroll
- sharepoint 2010如何隐藏.添加.禁用.Ribbon菜单中的项,多个方法
- SharePoint暂时禁用事件触发
- 如何删除SharePoint的循环日历项目
- 如何在android4.4上添加未读信息,未接来电或日历新事件提醒等功能
- 开发小技巧: 如何在jQuery中禁用或者启用滚动事件.scroll
- sharepoint 2013不小心把同级文件夹拖拽成子级文件夹如何拖拽回来
- Xcode中如何启用或禁用某些文件的ARC
- 客户端如何禁用与开启javascript
- [VB.NET]如何在一个窗体M中判断另一个窗体N中是否存在一个名称为A的事件?