Ну, я не уверен точно, на какой части вы потерялись, основываясь на вашем вопросе, поэтому если не привести полный рабочий пример, я затрону некоторые из основных пунктов:
1) Для идентификации данных, которые вы вставляете, прикрепите дату (и время, если применимо) к записи. (Изменить: вы ищете механизм для достижения этой цели? Если это так, опубликуйте ваш текущий DayRender
код обработчика и Calendar
разметка).
2) Чтобы заполнить отдельные данные дня в календаре, используйте Calendar.VisibleDate
(для фильтрации результатов БД) в обработчике Page.Load
, чтобы загрузить структуру данных (например, List<T>
) с данными дня за весь месяц. , Затем в обработчике Calendar.DayRender
добавьте соответствующие записи из структуры в e.Cell
.
3) Чтобы новые результаты отображались на первом обновлении страницы после вставки, вы должны иметь возможность использовать Response.Redirect
для текущей страницы после вставки. Это приведет к перезапуску процесса генерации страницы, но вы потеряете ViewState.
Редактировать: вот основной прототип того, что я пытался описать выше. Обратите внимание, что вы можете предварительно выбрать любой перечисляемый тип данных, здесь я использую List<T>
.
//Page code-behind
public partial class Default2 : System.Web.UI.Page
{
List<DataObject> liCurrentMonth = new List<DataObject>();
protected void Page_Load(object sender, EventArgs e)
{
liCurrentMonth = DataObject.GetCurrentMonth(Calendar1.VisibleDate);
}
protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
foreach (DataObject item in liCurrentMonth)
{
if (item.date == e.Day.Date)
{
Literal lit = new Literal();
lit.Text = item.text;
e.Cell.Controls.Add(lit);
}
}
}
}
//Data layer object
public class DataObject
{
public DateTime date { get; set; }
public string text { get; set; }
public static List<DataObject> GetCurrentMonth(DateTime currentdate)
{
//Get items from the db here, based on currentdate parameter
//and populate the List<DataObject>.
return new List<DataObject>();
}
}