この記事は主に、カレンダーに基づいたブログカレンダー機能のasp.netの実装を紹介します。これには、カレンダーコントロールを使用して日時関連の計算スキルを操作するためのasp.netが含まれます。必要な友人はそれを参照できます
この記事では、 asp.net の例は、Calendar に基づいてブログ カレンダー機能を実装します。参考のために皆さんと共有してください: 詳細は次のとおりです:
.net カレンダー コントロールを使用してブログでサイト カレンダーの効果を実現する方法 サイト カレンダーの最も重要な機能は表示することであると認識しています。ブログ所有者がブログを書いた日 [日付] をクリックすると、選択した日付のログ リストが表示されます。
まず、.net のサーバー コントロールが最初の日にポストバックを実行することがわかります。カレンダー コントロールをクリックすると、ポストバックが実行されます。次に、ポストバック イベントがトリガーされないようにデフォルトのリンクを変更します。ログがあるかどうかについては、データベースにアクセスしてクエリする必要があります。
カレンダーには DayRender イベントがあり、毎日が表示されるときにトリガーされます。まず、配列変数:
private int[] arrCurrentDays, arrPreDays, arrNextDays; //三个变量分别是当前月,前一月,和下一个月 private int intCurrentMonth, intPreMonth, intNextMonth; //三个整型数组存放相对月份写有blog的日期
CalendarDay d = ((DayRenderEventArgs)e).Day; TableCell c = ((DayRenderEventArgs)e).Cell; // 初始化当前月有Blog的日期数组 if (intPreMonth == 0) { intPreMonth = d.Date.Month; // 注意:日历控件初始化时我们得到的第一个月并不是当前月,而是前一个月的月份 intCurrentMonth = intPreMonth + 1; if (intCurrentMonth > 12) intCurrentMonth = 1; intNextMonth = intCurrentMonth + 1; if (intNextMonth > 12) intNextMonth = 1; arrPreDays = getArrayDay(d.Date.Year, intPreMonth); //得到前一个月有blog的日期数组 arrCurrentDays = getArrayDay(d.Date.Year, intCurrentMonth);//得到当月有blog的日期数组 arrNextDays = getArrayDay(d.Date.Year, intNextMonth);//得到下个月有blog的日期数组 } int j = 0; if (d.Date.Month.Equals(intPreMonth)) { while (!arrPreDays[j].Equals(0)) { if (d.Date.Day.Equals(arrPreDays[j])) { c.Controls.Clear(); c.Controls.Add(new LiteralControl("<a href="day.aspx?year=" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" mce_href="day.aspx?year=" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" " + d.Date.Year + "&month=" + d.Date.Month + "&day=" + d.Date.Day + ">" + d.Date.Day + "</a>")); } j++; } } else if (d.Date.Month.Equals(intCurrentMonth)) { while (!arrCurrentDays[j].Equals(0)) { if (d.Date.Day.Equals(arrCurrentDays[j])) { c.Controls.Clear(); c.Controls.Add(new LiteralControl("<a href="day.aspx?year=" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" mce_href="day.aspx?year=" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" " + d.Date.Year + "&month=" + d.Date.Month + "&day=" + d.Date.Day + " title=查看"+d.Date.Day+"日日志>" + d.Date.Day + "</a>")); } j++; } } else if (d.Date.Month.Equals(intNextMonth)) { while (!arrNextDays[j].Equals(0)) { if (d.Date.Day.Equals(arrNextDays[j])) { c.Controls.Clear(); c.Controls.Add(new LiteralControl("<a href="day.aspx?year=" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" mce_href="day.aspx?year=" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" " + d.Date.Year + "&month=" + d.Date.Month + "&day=" + d.Date.Day + ">" + d.Date.Day + "</a>")); } j++; }
ここで注目するのは、
メソッドはデータベースから当月のログがあるかどうかを問い合わせて、配列を返すということです。以上がカレンダーをベースにしたブログカレンダーの具体的な実装例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。