Jquery 更新下拉列表更改事件的数据
在下拉列表中的更改事件中,我需要更新部分ViewModel和fullcalendar jquery插件上的事件。正在更新我正在使用的插件上的事件。但是我不明白更新ViewModel.Team视图的最佳方法。这是我的第一个MVC应用程序。它是MVC4。 这是我的标记。我对控件使用多个模型Jquery 更新下拉列表更改事件的数据,jquery,asp.net-mvc,asp.net-mvc-4,fullcalendar,Jquery,Asp.net Mvc,Asp.net Mvc 4,Fullcalendar,在下拉列表中的更改事件中,我需要更新部分ViewModel和fullcalendar jquery插件上的事件。正在更新我正在使用的插件上的事件。但是我不明白更新ViewModel.Team视图的最佳方法。这是我的第一个MVC应用程序。它是MVC4。 这是我的标记。我对控件使用多个模型 <div id="manual_select_div" style="margin-top: 5px; border: 1px solid black; width: 100%; height: 50%"&
<div id="manual_select_div" style="margin-top: 5px; border: 1px solid black; width: 100%; height: 50%">
<div id="selectList">
<label id="team_lbl">Team Members: </label>
@foreach (var member in Model.Team)
{
<div id="@member.member_id.ToString()" style="font-weight:bold; background-color:@member.member_color" class="draggable"
data-event='{"title":"@member.member_name", "color":"@member.member_color"}'>@member.member_name</div>
}
</div>
</div>
<div id='edit_calendar' style="float:right; width: 60%; height: 70%"></div>
为了完整性…这是在document ready函数中初始化日历插件的方式:
$(document).ready(function () {
// page is now ready, initialize the calendar...
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
//Get the group from the dropdown to populate calendar
var groupSelected = $('#group_name_select').val();
var groupData = { iGroupID: groupSelected };
$('#edit_calendar').fullCalendar({
header:
{
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
titleFormat: { month: 'MMMM' },
defaultView: 'month',
selectable: true,
selectHelper: true,
droppable: true,
editable: true,
eventSources: [
{
events: function (start, end, timezone, callback) {
$.ajax({
type: "POST",
url: '@Url.Action("GetEventsForGroup", "Home")',
data: JSON.stringify(groupData),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (doc) {
var events = [];
$(doc).each(function () {
events.push({
title: $(this).attr('title'),
start: $(this).attr('start'),
end: $(this).attr('end'),
id: $(this).attr('eventID'),
objectID: $(this).attr('objectID'),
color: $(this).attr('color'),
textColor: 'black',
editable: true
});
});
callback(events);
},
error: function () {
alert("There was an error fetching events!")
}
});
}
}
],
eventResizeStart: function (event, jsEvent, ui, view) {
console.log('RESIZE START ' + event.title);
},
eventResizeStop: function (event, jsEvent, ui, view) {
console.log('RESIZE STOP ' + event.title);
},
eventResize: function (event, dayDelta, minuteDelta, revertFunc) {
if (dayDelta >= 1 && !event.allDay) {
revertFunc();
for (var i = 0 ; i < dayDelta ; i++) {
var newEvent = {
id: event.id,
objectID: event.objectID,
title: event.title,
color: event.color,
textColor: 'black',
start: new Date(event.start),
end: new Date(event.end),
allDay: event.allDay
};
newEvent.start.setDate(newEvent.start.getDate() + (i + 1));
newEvent.end.setDate(newEvent.end.getDate() + (i + 1));
$('#edit_calendar').fullCalendar('renderEvent', newEvent, 'stick');
}
}
}
}); //end calendar initialization
//...other initialization stuff not relevant
}); //End document ready function
警报中将显示正确的名称。
控制器方法如下所示:
public ActionResult UpdateTeamMembers(int iGroupID)
{
DatabaseAccess onCallDA = new DatabaseAccess();
DataTable tdtTeamInfo = new DataTable();
try
{
tdtTeamInfo = onCallDA.GetGroupMembersByGroupID(iGroupID);
List<Member> team = tdtTeamInfo.AsEnumerable().Select(x => new Member
{
group_id = (string)(x["GroupID"].ToString()),
member_id = (string)(x["MemberID"].ToString()),
member_name = (string)(x["MemberName"]),
member_color = (string)(x["MemberColor"])
}).ToList();
return Json(team, JsonRequestBehavior.AllowGet);
}
catch(Exception)
{
throw;
}
}
public ActionResult更新成员(int-iGroupID)
{
DatabaseAccess onCallDA=新建DatabaseAccess();
DataTable tdtTeamInfo=新DataTable();
尝试
{
tdtTeamInfo=onCallDA.GetGroupMembersByGroupID(iGroupID);
List team=tdtTeamInfo.AsEnumerable()。选择(x=>new Member
{
组id=(字符串)(x[“GroupID”].ToString()),
member_id=(字符串)(x[“MemberID”].ToString()),
成员名称=(字符串)(x[“成员名称]),
成员颜色=(字符串)(x[“成员颜色”])
}).ToList();
返回Json(team,JsonRequestBehavior.AllowGet);
}
捕获(例外)
{
投
}
}
我不知道如何在html中设置值。最初,我使用团队模型设置值:
<div id="selectList">
<label id="team_lbl">Team Members: </label>
@foreach (var member in Model.Team)
{
<div id="@member.member_id.ToString()" style="font-weight:bold; background-color:@member.member_color" class="draggable"
data-event='{"title":"@member.member_name", "color":"@member.member_color"}'>@member.member_name</div>
}
</div>
小组成员:
@foreach(Model.Team中的var成员)
{
@member.member\u名称
}
但是如何在jquerychange函数中设置上面的值呢
更新
我能够在变更事件中更新“div”,如下所示:
$("#group_name_select").change(function(){
var groupSelected = $(this).val();
var groupData = { iGroupID: groupSelected };
$.ajax({
type: "POST",
url: '@Url.Action("UpdateTeamMembers", "Home")',
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify(groupData),
success: function(team) {
$('div').remove('.draggable');
$(team).each(function () {
$('#selectList').prepend('<div id="' + $(this).attr('member_id') + '" style="font-weight:bold; background-color:' + $(this).attr('member_color') + '" class="draggable" data-event=\'{"title":"' + $(this).attr('member_name') + '", "color":"' + $(this).attr('member_color') + '"}\'>' + $(this).attr('member_name') + '</div>');
});
},
error: function() {
alert("There was an error fetching events!")
}
});
$(“#组名_选择”).change(函数(){
var groupSelected=$(this.val();
var groupData={iGroupID:groupSelected};
$.ajax({
类型:“POST”,
url:'@url.Action(“updateAmmembers”,“Home”),
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
数据:JSON.stringify(groupData),
成功:职能(团队){
$('div').remove('draggable');
$(团队)。每个(功能){
$('#selectList').prepend('+$(this.attr('member#u name'))+'');
});
},
错误:函数(){
警报(“获取事件时出错!”)
}
});
div是可选择的,颜色和文本是正确的,但它们不可拖动。我检查了class属性是否设置正确,但无法拖动日历上的项目。
有人知道为什么它们不可拖动吗?当最初显示它们时,它们是可拖动的。是的,您需要再次绑定此库,因为jQuery只绑定到存在的元素。我在这里回答- 您需要使用相同的代码,但我认为您不应该使用:
$('div').remove('.draggable');
您应该将其更改为选择特定容器,因为现在您删除了页面中所有div的draggable
$('#selectList > div').remove('.draggable');
$("#group_name_select").change(function(){
var groupSelected = $(this).val();
var groupData = { iGroupID: groupSelected };
$.ajax({
type: "POST",
url: '@Url.Action("UpdateTeamMembers", "Home")',
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify(groupData),
success: function(team) {
$('div').remove('.draggable');
$(team).each(function () {
$('#selectList').prepend('<div id="' + $(this).attr('member_id') + '" style="font-weight:bold; background-color:' + $(this).attr('member_color') + '" class="draggable" data-event=\'{"title":"' + $(this).attr('member_name') + '", "color":"' + $(this).attr('member_color') + '"}\'>' + $(this).attr('member_name') + '</div>');
});
},
error: function() {
alert("There was an error fetching events!")
}
});
$('div').remove('.draggable');
$('#selectList > div').remove('.draggable');