У меня есть элемент управления календарем ASP.Net, который в DayRender проходит через список «CalendarEvents» (один из моих классов). Если день, когда DayRender включен, находится в списке CalendarEvents, затем заполните эту ячейку календаря информацией о событии.Эффективное заполнение календаря ASP.Net
В моей тестовой среде нет проблем, но я думаю, что с тысячами записей это может стать проблемой. Вот что я делаю:
public partial class calendar : System.Web.UI.Page
{
CalendarEventList allevents = CalendarEventManager.GetListAll();
//Page_Load, etc...
protected void calmaincalendar_DayRender(object sender, DayRenderEventArgs e)
{
foreach (CalendarEvent x in allevents)
{
if (e.Day.Date == x.EventDate)
{
//logic to extract the data from x, and modify the e.Cell to display that data
}
}
}
}
Мои вопросы:
1) Я помещаю события как переменная уровня страницы, так что база данных должна только быть вызван один раз, а не на каждый день. Хорошо плохо? Потенциальные проблемы? Эта страница предназначена исключительно для чтения событий календаря, а не для редактирования или удаления.
2) Пройдя через список «облегчений» на каждый день, это потенциально опасно/ресурс? Контролирует ли календаря DayRender только месяц, который отображается? Если это так, что означает только 30 или 31 звонка за раз, это может быть хорошо. Но если он делает что-то вроде звонков DayRender в течение всего года или в предыдущий и следующий месяцы ... В любом случае, надеюсь, вы получите мое мнение. Совет по этому вопросу будет оценен по достоинству.
3) Есть ли что-нибудь, что я мог бы сделать лучше? Я понимаю, что я только опубликовал голый скелет, но если у кого-то есть какой-то подобный опыт или ловушки, которые они хотели бы знать ранее, этот совет будет оценен.
Как я печатал на вопросы, которые я понял, что, когда я получаю CalendarEventList на уровне страницы, я мог сразу же петлю через него и вырезать все за последние 3 и последующих 3 месяцев или что-то кроме. Проблема в том, что она каким-то образом отслеживает ее, так что, когда пользователь вернется на 4 месяца, мне придется это осознать и снова вызвать базу данных. У меня есть смутное чувство, что ответ находится где-то в этом направлении, но все еще не уверен.
... Genius. Я определенно передумал, это кажется таким очевидным сейчас :) Спасибо! – CptSupermrkt