用jquery实现学校的校历

本文介绍了一个学校日历系统的实现细节,包括如何显示本周为学期的第几周、标记有事件的日期并允许查看详细信息。通过C#与JavaScript结合的方式,实现了日期选择器的功能,并能在选中特定日期时加载该日的事件。
摘要由CSDN通过智能技术生成

 

学校日历有以下几个特点:1显示本周是本学期的第几周;2显示今日事件;3特殊显示有事件的日期,点击该日期显示本日事件。

 

截图:

 

 

 

 

controller代码:

 

ExpandedBlockStart.gif 代码
         public  ActionResult CalendarDisplay() 
        {
            BL.DateEventBL de 
=   new  BL.DateEventBL();

            
// 获取当日日期,使用能被javascript转换成日期的格式
            DateTimeFormatInfo myDTFI  =   new  CultureInfo( " en-US " false ).DateTimeFormat;
            
string  utcTime  =  DateTime.Now.ToString( " MMM dd,yyyy HH:mm:ss " , myDTFI);
        
            ViewData[
" currentDay " =  utcTime;

            
// 获取当月有事件的日期
            List < DateTime >  dateHaveEvent  =  de.GetTimeHaveEvent(DateTime.Now.Year, DateTime.Now.Month);
            List
< String >  dates = dateHaveEvent.Select(u => u.ToString( " MMM dd,yyyy HH:mm:ss " , myDTFI)).ToList();
            ViewData[
" datesHaveEvent " =  dates;

            
// 获取当日事件
            List < BL.CDateEvent >  deInfos  =  de.GetDE(DateTime.Now,  new  Guid( " 00000000-0000-0000-0000-000000000001 " ));

            
// 获取当前周
            BL.DateSpanBL ds  =   new  BL.DateSpanBL();
            
int  currentWeek  =  ds.GetCurrentWeek(DateTime.Now,  new  Guid( " 00000000-0000-0000-0000-000000000002 " ));
            ViewData[
" currentWeek " =  currentWeek;
            
return  View(deInfos);
        }

 

 

 

partialview(局部视图):

 

 

ExpandedBlockStart.gif 代码
<% @ Control Language = " C# "  Inherits = " System.Web.Mvc.ViewUserControl<IEnumerable<BL.CDateEvent>> "   %>

<% string  json  =   "" ; List < String >  datesHaveEvent  =  ViewData[ " datesHaveEvent " as  List < String > %>

<%
              
if  (datesHaveEvent ! =   null   &&  datesHaveEvent.Count  >   0 )
            {
                json 
=   " [ " ;
                
for  ( int  i  =   0 ; i  <  datesHaveEvent.Count;i ++ )
                {
                    
if  (i  ==  datesHaveEvent.Count  -   1 )
                    {
                        json 
+=   " {\ " time \ " :\"" + datesHaveEvent.ElementAt(i) +  " \ " } " ;    //  最后一项
                    }
                    
else
                    {
                        json 
+=   " {\ " time \ " :\"" + datesHaveEvent.ElementAt(i) +  " \ " }, " ;    //
                    }
                   
                }
                json 
+=   " ] " ;
            }
%>





< div  id ="datePicker" ></ div >

< br  />

当前是第 
< span  style ="color:Red; font-size:14px;" > <% = ViewData[ " currentWeek " ] %>   </ span >  周
< br  />
<% = DateTime.Now.ToShortDateString()  %>
< br  />

<%  
    foreach(var item in Model)
    {
%>

    
<% = Html.Encode(item.Content)  %>

<%
   } 
%>
< br  />

< div  id ="otherEvent"  style =" width:300px;" ></ div >


 

 

 

javascript(脚本):

 

 

ExpandedBlockStart.gif 代码

// /服务器与客户端当前时间的转换
     var  a = ' <%= ViewData["currentDay"]%> ' ;
    
var  b  =  Date.parse(a);
    
var  serviceDate  =   new  Date(b);
    
var  clientDate  =   new  Date();


    
var  yearOffset  =  serviceDate.getYear()  -  clientDate.getYear();

    
var  monthOffset  =  serviceDate.getMonth()  -  clientDate.getMonth();

    
var  dayOffset  =  serviceDate.getDate()  -  clientDate.getDate();

    
// /获取日期列表
     var  jsn  =  eval( ' <%=json %> ' );




    $(
function () {
        
var  options  =  {
            prevText: 
" 上一月 " ,    // 跳转到上一页的提示文本
            nextText:  ' 下一月 ' ,    // 跳转到下一页的提示文本

            minDate: 
- 30 ,
            maxDate: 
30 ,
            hideIfNoPrevNext: 
false ,

            defaultDate: 
" + "   +  yearOffset  +   " y + "   +  monthOffset  +   " m + "   +  dayOffset  +   " d " ,

            beforeShowDay: DisplayDayHaveEvent,  
// 显示每个日期之前的操作
            onSelect: select                      //  选择一个日期的回调函数
        };

        
function  DisplayDayHaveEvent(date) {

            
for  ( var  i  =   0 ; i  <  jsn.length; i ++ ) {

                
var  cc  =  Date.parse(jsn[i].time);
                
var  time  =   new  Date(cc);


                
if  (date.getMonth()  ==  time.getMonth()  &&  date.getDate()  ==  time.getDate()) {
                    
return  [ true "" ]
                }
            }

            
return  [ false "" ];
        }

        
function  select(dateText, inst) {
            $(
' #otherEvent ' ).load( " http://www.cnblogs.com/Calendar/EventDetail?date= "   +  dateText);
            

            
return   false ;
        }

        
// 初始化日期控件
        $( ' #datePicker ' ).datepicker(options);


    })

 

 

 

转载于:https://www.cnblogs.com/pkurain/archive/2009/12/29/1635044.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值