IT 관련 이야기/SharePoint

Customizing Sharepoint 2007 Calendar view

종소리도깨비 2010. 6. 8. 15:41
반응형
Sharepoint 2007 Calendar 보기를 수정하는게 쉬운일은 아니다. 특히 달력 부분에 여러가지 정보를 나타나게 하려면
계산된 필드 등을 사용해서 데이터를 어떻게 잘 다루는 게 흔히 사용되는 방식이었다.

Calendar 를 직접 수정하는 방법이 설명되어져 있어서 다음과 같이 적어본다.

http://social.msdn.microsoft.com/Forums/en-US/sharepointcustomization/thread/179c74de-525c-4236-83cf-91861e9a7aee




 c:\Program Files\Common Files\Microsoft Shared\web server extensions\12\Templates\Control Templates 에서 DefaultTemplates.ascx 를 수정 .
<SharePoint:RenderingTemplate ID="CalendarViewMonthItemTemplate" runat="server">
CalendarViewMonthItemTemplate --> 당연 월간... 주별, 일별 보기도 이런식으로 수정가능.
CalendarViewItemTemplate --> 기본 주별,일별에 쓰이는 거겠져....
<Template>
태그 아래에 기술되어 있는 HTML 수정하면 됨.
데이터를 가지고 오는 방법은
"<%# SPHttpUtility.HtmlUrlAttributeEncode(DataBinder.Eval(Container,"DataItem.DisplayFormUrl",""))%> 이런식이며   대표적으로 종료일을 가지고 오는방법은 <%# SPHttpUtility.HtmlEncode(DataBinder.Eval(Container, "DataItem.EndDate", "{0:t}"))%> 이런식으로 가지고 옴.


* Calendar 월별 보기에서 모든항목이 Expand 되게 보여지고자 할때.
방법 1 : 해보니 속도가 좀 느림.( Div 만들고 보이고 닫고).. 답답함. 다만 개별보기에 적용가능.
 
http://moblog.bradleyit.com/2009/08/sharepoint-expand-calendar-month-view.html
<div id='cover' style='position:absolute;top:0px;left:0px;width:100%;background:white;'></div>
<script type="text/javascript">

var yScroll = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;
var y = window.innerHeight || document.body.clientHeight || document.documentElement.clientHeight;
var xScroll = window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft;
var x = window.innerWidth || document.body.clientWidth || document.documentElement.clientWidth;
var cover = document.getElementById("cover");

cover.style.height = (y + yScroll) + "px";
cover.style.width = (x + xScroll) + "px";

function expand() {
if (document.referrer != location.href && !location.href.match(/CalendarPeriod=((week)|(day))/i)) { GetMonthView('11111111'); }
else { cover.style.display = "none"; }
}
window.onload = function() { expand(); };
</script>

방법2 : DefaultTemplates.ascx  수정 . --> 아무래도 속도가 빠르나 전역이 변경됨
http://social.msdn.microsoft.com/forums/en-US/sharepointcustomization/thread/84824deb-e205-4052-a858-3febacd85e45/
 

<Sharepoint:MonthlyCalendarView runat="server"

SelectedDate='<%# DataBinder.Eval(Container,"SelectedDate","") %>'

ExpandedWeeks='<%# SPHttpUtility.HtmlEncode( DataBinder.Eval(Container,"ExpandedWeeks","")) %>'

ItemTemplateName="CalendarViewMonthItemTemplate"

ItemAllDayTemplateName="CalendarViewMonthItemAllDayTemplate"

ItemMultiDayTemplateName="CalendarViewMonthItemMultiDayTemplate"

TabIndex=2>
-->

</Sharepoint:MonthlyCalendarView>

<Sharepoint:MonthlyCalendarView runat="server"

SelectedDate='<%# DataBinder.Eval(Container,"SelectedDate","") %>'

ExpandedWeeks='1111111'

ItemTemplateName="CalendarViewMonthItemTemplate"

ItemAllDayTemplateName="CalendarViewMonthItemAllDayTemplate"

ItemMultiDayTemplateName="CalendarViewMonthItemMultiDayTemplate"

TabIndex=2>

</Sharepoint:MonthlyCalendarView>


반응형