У меня есть задача улучшить существующее приложение C # SharePoint, которое отображает расписания для персонала.
У меня нет свободы использовать календарь плагинов jQuery.Мне нужно придерживаться текущего кода, но попытаться применить к нему jQuery, чтобы ускорить производительность.Текущее приложение возвращает все графики сразу, а затем рисует их на столе.Проблема в том, что вызов данных может быть слишком большим, и страница загружается вечно.Моя задача состоит в том, чтобы получать данные для отдельных лиц по одному и рисовать их один за другим.
В настоящее время я использую отложенный объект jQuery 1.5 «когда», чтобы сначала заполнить необходимые параметры, а затем «потом» с помощьюuserids получают данные о расписании пользователей асинхронно.Каждый вызов возвращает набор данных, содержащий две таблицы данных ... один с информацией о пользователе, а другой с запланированными событиями пользователя.Проблема в том, что данные возвращаются непоследовательно.При просмотре кода я вижу, что возвращаемая информация о пользователе не всегда соответствует данным события, которые должны быть привязаны к пользователю.
Как я упоминал ранее, я использую отложенный объект, пробовал его без объекта, безуспешно пытался добавить задержку между каждым вызовом данных, и я просто запутался.
Не уверен, что кто-нибудь может мне помочь, но если у вас есть предложения, я, безусловно, был бы рад услышать их.Заранее спасибо за любые идеи.
// When page loads
$(document).ready(function () {
// The following block uses the jQuery.Deferred() object, introduced in jQuery 1.5
// See http://api.jquery.com/category/deferred-object/
// the object allows us to chain callbacks, **in the order specified**
// Get date range
debugger;
//GetStartDate(), GetEndDate() populates date range
//PopulateParams() does that for remaining parameters
$.when(GetStartDate(), GetEndDate())
.then(function () {
PopulateParams();
GetUserSchedule();
})
.fail(function () {
failureAlertMsg();
})
});
// Returns schedule for each person listed in between selected start and end dates
function GetUserSchedule() {
for (var i = 0; i < arrRequests.length; i++) {
// Ajax call to web method, passing in string
$.ajax({
type: "POST",
url: "/_layouts/epas/scheduler/default.aspx/GenerateUserSchedules",
data: arrRequests[i], // example data: {"UserId":"6115","startDate":"\"7/1/2011\"","endDate":"\"7/31/2011\"","ddlGroupSelectedItem":"Z8OK","ddlGroupSelectedValue":"Z8OK#","ddlOrgSelectedValue":"2"}
contentType: "application/json",
dataType: "json",
success: SuccessFunction,
error: function (d) { alert('Failed' + d.responseText + '\nPlease refresh page to try again or contact administrator'); }
})
}
}
// On successful completion of call to web method, paint schedules into HTML table for each user
function SuccessFunction(data) {
if (data != null && data.d != null && data.d.Temp != null) {
// Calls a bunch of functions to paint schedule onto HTML table
// Data contains two tables: one contains user info and the other contains rows of info for each event for user
// at times, the user info is not the correct user or the events are not correct for user
}
}