Fullcalendar:回发后返回选定日期

时间:2010-07-27 14:53:49

标签: date postback fullcalendar

关于jquery插件fullcalendar的这个问题。 如何在回发后返回选定的日期?..

例如,我将周日议程作为默认视图。假设我选择下周(自定义周)并在其中创建事件。 回发后我回到默认周,但我想得到自定义周。

如何解决这个问题?请帮忙! 谢谢

5 个答案:

答案 0 :(得分:1)

您必须保存用户选择的周数。在PHP中,您可以使用$_SESSION来保存选定的周,当从事件创建过程返回时,脚本会获取此变量并显示该周。

session_start();
if (isset($_SESSION["week_number"]))
    $week_number = $_SESSION["week_number"];
else 
    $week_number = $this_week;

echo '<script>var week_number = '.$week_number.'; </script>';

// insert script to show the calendar here, use the variable week_number in your
// Javascript

当用户点击“下周”按钮时,您必须通过对这样的文件的AJAX调用来告诉PHP:

<?php
    session_start();
    $_SESSION["week_number"] = $_GET["new_week_number"];
?>

使用get参数将新的周号发送到文件,即set_week_number.php?new_week_number=123

答案 1 :(得分:1)

javascript可以从属性中获取值,因此在回发之前将值放入会话状态。在回发时将会话状态的值拉入属性。然后从客户端获取该属性的值。

服务器端:

public string bar { get; set; }

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
        bar = Session["barvalue"].ToString();        
}

客户端:

        $(document).ready(function() {
            var foo = '<%= bar %>';
            alert(foo);
        });

答案 2 :(得分:1)

我自己一直在想这个。这就是我想出来的。

它折叠了两次:

  1. 保存视图和
  2. 它会在页面加载后恢复所选日期。
  3. 我遇到的问题是当前日期的cookie是在FullCalendar的加载/初始化时设置的,之后读取了cookie。我通过在页面加载时读取cookie并删除它来解决这个问题。该日期的Cookie将在导航中设置。

    $(document).ready(function() {
        calendar = $('#calendar').fullCalendar( {
            defaultView:$.cookie('fullcalendar_defaultView') || {if $_USER.status==1}'month'{else}'agendaWeek'{/if},
            viewDisplay: function(view) {
                $.cookie('fullcalendar_defaultView', view.name);
                if ( calendar ) MySetDate();
            }
        }
    
    function MySetDate()
        {
            var thedate = $('#calendar').fullCalendar('getDate');
    
            raw_date = thedate + 'stringed';
            raw_split_date = raw_date.split(' ');
    
            switch (raw_split_date[1]) 
            {
                case 'Jan': raw_month = 0; break;
                case 'Feb': raw_month = 1; break;
                case 'Mrt': raw_month = 2; break;
                case 'Apr': raw_month = 3; break;
                case 'May': raw_month = 4; break;
                case 'Jun': raw_month = 5; break;
                case 'Jul': raw_month = 6; break;
                case 'Aug': raw_month = 7; break;
                case 'Sep': raw_month = 8; break;
                case 'Oct': raw_month = 9; break;
                case 'Nov': raw_month =10; break;
                case 'Dec': raw_month =11; break;
            }
    
            $.cookie('lof_y', raw_split_date[3], { expires: 2 } );
            $.cookie('lof_m', raw_month,         { expires: 2 } );
            $.cookie('lof_d', raw_split_date[2], { expires: 2 } );
        }
    
    function setMyView() {
        $('#calendar').fullCalendar('gotoDate', $.cookie('lof_y'), $.cookie('lof_m'), $.cookie('lof_d') );
        $.cookie('lof_y', null);
        }
    
        if ( $.cookie('lof_y') ) setMyView();
    } );
    

答案 3 :(得分:0)

您可以执行如上所述的会话状态(这是ASP特定会话状态的link)。在链接页面上的代码示例下,是如何将值保存到会话状态以及如何从会话状态读取值的示例。是的,您可以从会话端获取值到客户端:)

答案 4 :(得分:0)

我尝试执行以下操作。 服务器端:

[HttpPost] public ActionResult Create(FormCollection collection){   
   ...  
   Session["curdate"] = asi.appointmentDate.ToString();  
} 
public ActionResult CurrentDate(){  
   return (Session["curdate"] == null) ? null : Content(Session["curdate"].ToString()); 
}

客户方:

var sd = $.ajax(
                    {
                        url: '<%= ResolveUrl("~/Schedule/CurrentDate") %>',
                        async: false,
                        success: function(data, result) {
                            if (!result)
                                alert('Failure to retrieve the date.');
                        }
                    }
                ).responseText;
        var selectedDate = (sd == "") ? new Date() : new Date(sd);
        $('#calendar').fullCalendar('gotoDate', selectedDate);