Полный календарь: вернуться к выбранной дате после обратной передачи - PullRequest
0 голосов
/ 27 июля 2010

Этот вопрос о плагине jquery fullcalendar. Как я могу вернуться к выбранной дате после обратной передачи? ..

Например, у меня есть недельная повестка дня как вид по умолчанию. Предположим, я выбрал следующую неделю (пользовательскую неделю) и создал в ней событие. После обратной передачи я возвращаюсь к неделе по умолчанию, но хочу получить пользовательскую неделю.

Как можно решить эту проблему? .. Пожалуйста, помогите! Спасибо

Ответы [ 5 ]

1 голос
/ 28 октября 2011

Я сам выяснил это. Это то, что я придумал.

Это 2 сгиба:

  1. сохраняет вид и
  2. восстанавливает выбранную дату после загрузки страницы.

Проблема, с которой я столкнулся, заключалась в том, что файл 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();
} );
1 голос
/ 30 июля 2010

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);
        });
1 голос
/ 27 июля 2010

Вы должны сохранить номер недели, выбранный пользователями.В 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

и когда пользователь нажимает «Следующая неделя»кнопку, вы должны сказать, что PHP с вызовом AJAX для файла, как это:

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

Отправьте новый номер недели в файл с параметром get, то есть set_week_number.php?new_week_number=123

0 голосов
/ 30 июля 2010

Я пытаюсь сделать следующее. Сторона сервера:

[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);
0 голосов
/ 29 июля 2010

Вы можете сделать состояние сеанса, как указано выше (Вот ссылка для конкретного состояния сеанса ASP). Под примерами кода на связанной странице приведены примеры того, как сохранить значение в состоянии сеанса и как прочитать значение из состояния сеанса. И да, вы можете получить значения со стороны сеанса на сторону клиента:)

...