ホームページ  >  記事  >  バックエンド開発  >  カレンダーをベースにしたブログカレンダーの具体的な実装例

カレンダーをベースにしたブログカレンダーの具体的な実装例

零下一度
零下一度オリジナル
2017-07-09 11:45:271658ブラウズ

この記事は主に、カレンダーに基づいたブログカレンダー機能のasp.netの実装を紹介します。これには、カレンダーコントロールを使用して日時関連の計算スキルを操作するためのasp.netが含まれます。必要な友人はそれを参照できます

この記事では、 asp.net の例は、Calendar に基づいてブログ カレンダー機能を実装します。参考のために皆さんと共有してください: 詳細は次のとおりです:

.net カレンダー コントロールを使用してブログでサイト カレンダーの効果を実現する方法 サイト カレンダーの最も重要な機能は表示することであると認識しています。ブログ所有者がブログを書いた日 [日付] をクリックすると、選択した日付のログ リストが表示されます。

まず、.net のサーバー コントロールが最初の日にポストバックを実行することがわかります。カレンダー コントロールをクリックすると、ポストバックが実行されます。次に、ポストバック イベントがトリガーされないようにデフォルトのリンクを変更します。ログがあるかどうかについては、データベースにアクセスしてクエリする必要があります

カレンダーには DayRender イベントがあり、毎日が表示されるときにトリガーされます。まず、

配列変数:

private int[] arrCurrentDays, arrPreDays, arrNextDays; //三个变量分别是当前月,前一月,和下一个月
private int intCurrentMonth, intPreMonth, intNextMonth; //三个整型数组存放相对月份写有blog的日期

を定義してから、カレンダーの DayRender イベントに次のコードを記述します。
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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。