我有Asp.net日历。我想从日期单元格中获取选定日期并将其保存在带有一些文本的数据库中..对于我使用的文本提示对话框..
Calendar1_SelectionChanged事件未触发。所以我无法选择日期..
这是我的提示函数
function openPrompt() {
var nName = prompt("Enter Title");
$.ajax({
type: "POST",
url: "Events.aspx/SaveUser",
data: '{user: ' + JSON.stringify(nName) + '}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
alert("User has been added successfully.");
window.location.reload();
}
});
}
和网络方法..
public static void SaveUser(object user)
{
Events e = new Events();
e._Event= user.ToString();
}
我可以在JQuery中获取选定的单元格日期吗?还是通过任何其他方法?
编辑:我也试过这个:
var calendarDate = '<%= Calendar1.SelectedDate %>';
var x = document.getElementById('<%= Calendar1.ClientID%>').value;
不工作..
答案 0 :(得分:0)
AJAX在客户端运行,而Calendar1_SelectionChanged
在服务器端运行,因此它们是两个不同的世界。
您可以在SaveUser
功能中获取所选日期。像这样:
public void SaveUser(object user)
{
DateTime MyDate = Calendar1.SelectedDate;
...
...
}
编辑要在删除SaveUser
关键字后回答有关AJAX未触及static
功能的问题。
您只在问题中提供了SaveUser
函数的代码,因此我不知道该类中的其余代码。我假设您使用SaveUser
属性标记了[System.Web.Services.WebMethod]
函数。此方法查看请求的URL Events.aspx/SaveUser
,在页面名称后解析结束SaveUser
字符串,并自动调用SaveUser
函数。在这种方法中,函数需要是静态的。
这很好,因为它可以自动运行,因此您无需编写任何代码。但你真的不必使用这种方法。您可以使用标准的HTML / ASP方法并自行处理请求。这样你就可以完全控制。而不是Events.aspx/SaveUser
,请使用标准查询变量,例如Events.aspx?SaveUser=1
或Events.aspx?Action=SaveUser
或您喜欢的任何内容。你的AJAX将如下所示:
function openPrompt() {
var nName = prompt("Enter Title");
$.ajax({
type: "POST",
url: "Events.aspx?Action=SaveUser",
data: '{user: ' + JSON.stringify(nName) + '}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
alert("User has been added successfully.");
window.location.reload();
}
});
}
现在处理Events.aspx
页面中的查询字符串,检查Action
变量并相应地调用SaveUser
函数:
protected void Page_Load(object sender, EventArgs e) {
If(Request.QueryString["Action"] == "SaveUser")
SaveUser();
}
最后,这是SaveUser
函数的样子:
public void SaveUser()
{
User user = null;
If(Request.Form["user"] != null)
user = System.Web.Script.Serialization.serializer.Deserialize<User>(Request.Form["user"]);
DateTime MyDate = Calendar1.SelectedDate;
...
...
}
请注意,您现在必须手动反序列化您的JSON数据(它是使用[WebMethod]
自动完成的)。为此,您需要导入System.Web.Script.Serialization
库。
答案 1 :(得分:0)
已解决 - 使用JQuery Full Calender
$(document).ready(function() {
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
var events_array = [
{
title: 'Test1',
start: new Date(2012, 8, 20),
tip: 'Personal tip 1'},
{
title: 'Test2',
start: new Date(2012, 8, 21),
tip: 'Personal tip 2'}
];
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
selectable: true,
events: events_array,
eventRender: function(event, element) {
element.attr('title', event.tip);
},
select: function(start, end, jsEvent, view) {
// start contains the date you have selected
// end contains the end date.
// Caution: the end date is exclusive (new since v2).
var allDay = !start.hasTime && !end.hasTime;
alert(["Event Start date: " + moment(start).format(),
"Event End date: " + moment(end).format(),
"AllDay: " + allDay].join("\n"));
}
});
});
感谢史蒂夫的帮助
交