Я пытаюсь создать календарь, представляющий собой простой пользовательский интерфейс для отображения дат и дат для пользователей нашей системы. Я переопределил событие «DayRender» в Календаре, чтобы получить доступ к каждой ячейке, а затем вставил пару динамических элементов управления для отображения определенных данных. Дисплей органов управления работает отлично. Однако недавно я хотел добавить LinkButton с аргументами команды и захватить событие, чтобы запустить другую логику и изменить пользовательский интерфейс. Я получил LinkButton для правильного отображения, и он отображается как простой "" тег с назначенным идентификатором. Однако нажатие на ссылку ничего не делает, и кажется, что нормальная часть ссылки "href = '... javascript action ...'" не генерируется. У меня такое ощущение, что это все из-за того, что я добавляю элемент управления на этапе рендеринга дня в жизненном цикле страницы. Но если бы это было так, контроль, вероятно, вообще не был бы обнаружен.
Есть идеи, почему действие по щелчку еще не добавлено, а текст и все остальное добавлено? Код ниже.
Спасибо за ваше время
protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
if (Schedule != null)
{
var dayReq = from day in Schedule
where day.RequiredDate == e.Day.Date
where day.RequiredQty != 0
select day;
if (dayReq.FirstOrDefault() != null)
{
//Open the Date
e.Cell.Controls.Add(new LiteralControl("<br /><div class=\"auth-sched-req\">Req Qty: <strong>" + String.Format("{0:#,#.###}", dayReq.FirstOrDefault().RequiredQty) + "</strong><br />Prom Date: "));
//Create a link button for the promise date
LinkButton lb = new LinkButton();
lb.ID = dayReq.FirstOrDefault().ItemId.ToString();
lb.Text = dayReq.FirstOrDefault().RequiredDate.ToShortDateString();
lb.CommandName = "ShowPromise";
lb.CommandArgument = dayReq.FirstOrDefault().ItemId.ToString();
lb.Command +=new CommandEventHandler(lb_Command);
e.Cell.Controls.Add(lb);
//Close the Date
e.Cell.Controls.Add(new LiteralControl("</div>"));
}
}
}
protected void lb_Command(Object sender, CommandEventArgs e)
{
//Do some magic here
Response.Write(e.CommandArgument.ToString());
}