Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal estou tentando exibir os eventos no meu calendário, porém não estou tendo sucesso. Sou iniciante em Jquery e após pesquisar em vários sites e consultar vários exemplos não consegui exibir os eventos. O calendário é exibido, os eventos não!
Minha controller (ASP MVC):
var listCalender = new List<object>();
var dal = new DAL.PosVendasParticipantesDAL();
var calender = dal.Todos();
if (calender.Rows.Count > 0)
{
foreach (DataRow dr in calender.Rows)
{
var entity = new Modelos.PosVendasParticipantesModelo();
entity.ID = Convert.ToInt32(dr["ID"]);
entity.ProximaLigacao = Convert.ToDateTime(dr["PROXIMA_LIGACAO"]);
listCalender.Add(new
{
title = entity.ID,
start = entity.ProximaLigacao,
});
}
}
return Json(listCalender, JsonRequestBehavior.AllowGet);
Após o retorno Json, obtenho os seguintes dados:
[{"title":1,"start":"\/Date(1469725020000)\/"},{"title":2,"start":"\/Date(1469725020000)\/"},{"title":3,"start":"\/Date(1470674040000)\/"}
É exatamente os parâmetros que o fullCalendar exige pra exibir eventos, acho que estou sabendo interpretar o Json retornado!
Jquery:
<script>
$(document).ready(function() {
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,basicWeek,basicDay'
},
defaultDate: '2018-03-12',
navLinks: true, // can click day/week names to navigate views
editable: true,
eventLimit: true, // allow "more" link when too many events
events: $(function (start, end, timezone, callback) {
$.ajax({
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/Home/GetEvents",
success: function (dados) {
alert('foi');
$(dados).each(function (i) {
//document.writeln("<p>ID: " + dados[i].id + " | Data: " + dados[i].Start + "</p>")
events.push({
title: $(this).attr('title'),
start: $(this).attr('start')
});
});
}
});
})
});
});
</script>return Json(listCalender.ToArray(), JsonRequestBehavior.AllowGet);
Dessa forma eu converto o listCalender para array, correto? Eu já havia lido praticamente toda a documentação, porém nos docs da FullCalendar não há nenhum exemplo de como fazer em C#, poderia me ajudar nessa parte de invocar a call back? Meu código c# está correto?cara, não manjo de C#, mas para saber se está correto, faça o POST para a sua url e veja se retorna um JSON.
POST /Home/GetEvents
No JavaScript, faltou você fazer isso aqui:
success: function (dados) {
var events = []; //não tinha declarado o Array.
$(dados).each(function (i) {
events.push({
title: $(this).attr('title'),
start: $(this).attr('start')
});
});
callback(events); //não estava invocando o callback
}
Acompanhe pelo console do browser Ctrl + Shift + J se aparece algum erro de Javascript ou da chamada ajax pro C#.Deu certo, eu simplesmente coloquei events: caminhoDaController e deu certo. Muito obrigado pela ajuda!
dá uma olhada na documentação
https://fullcalendar.io/docs/events-function
você tem que invocar o callback passando o array de eventos.