システムのユーザーに日付と日付を表示するための単純な UI であるカレンダーを作成しようとしています。カレンダーの「DayRender」イベントをオーバーライドして各セルにアクセスし、特定のデータを表示するためにいくつかの動的コントロールを挿入しました。コントロールの表示はうまく機能します。ただし、最近、コマンド引数を使用して LinkButton を追加し、イベントをキャプチャして他のロジックを実行し、UI を変更したいと考えました。LinkButton が適切に表示されるようになり、ID が割り当てられた単純な "" タグとしてレンダリングされます。ただし、リンクをクリックしても何も起こらず、リンクの通常の「href='...javascript action...'」部分が生成されていないようです。これはすべて、ページ ライフ サイクルの Day Render 段階でコントロールを追加しているという事実によるものだと感じています。しかし、その場合、コントロールはおそらくまったく表示されないでしょう。
クリック アクションが追加されていないのに、テキストと他のすべてが追加されている理由についてのアイデアはありますか? コードは以下です。
御時間ありがとうございます
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());
}