Maison  >  Article  >  développement back-end  >  Exemple détaillé de mise en œuvre d'un calendrier de blog basé sur Calendar

Exemple détaillé de mise en œuvre d'un calendrier de blog basé sur Calendar

零下一度
零下一度original
2017-07-09 11:45:271701parcourir

Cet article présente principalement asp.net pour implémenter la fonction de calendrier de blog basée sur Calendar. Il implique asp.net d'utiliser le contrôle Calendrier pour exploiter les compétences de calcul liées à la date et à l'heure. Les amis qui en ont besoin peuvent Pour référence,

Cet article décrit l'exemple d'asp.net implémentant la fonction de calendrier de blog basée sur Calendar. Partagez-le avec tout le monde pour votre référence. Les détails sont les suivants :

Comment utiliser le contrôle Calendrier .net pour obtenir l'effet du calendrier du site dans le blog. Nous savons que c'est la fonction la plus importante du site. le calendrier est d'afficher le jour où le propriétaire du blog écrit Log, cliquez sur la date, vous entrerez dans la liste des journaux de la date sélectionnée,

Tout d'abord, nous savons que le contrôle du serveur dans .net sera effectuez une publication. Lorsque vous cliquez sur le premier jour dans le contrôle Calendrier, il y aura une publication. Ce que nous devons faire est de modifier son lien par défaut afin qu'il ne déclenche pas l'événement de publication. il y a des journaux sur quel jour. Quant à savoir s'il existe des logs, il faut se rendre dans la base de données pour interroger .

Il y a un événement DayRender dans Calendar, qui est déclenché lorsque chaque jour est rendu. Nous pouvons commencer à partir d'ici, définir d'abord un tableauvariable :

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

Ensuite, écrivez le code suivant dans l'événement DayRender du calendrier :

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++;
  }

Ce que nous remarquons ici, c'est que la méthode getArrayDay() est une méthode permettant de demander s'il y a des journaux dans le mois en cours à partir de la base de données. Ce qui est renvoyé est un tableau. Ce que j'ai écrit est le suivant :

public int[] getArrayDay(int intYear, int intMonth)
{
  int[] intArray = new int[31];
  //从数据库里选取符合要求的记录,将日期存入数组
  string strSql = "select data from test where year(data)=" + intYear +
  " and month(data)=" + intMonth;
  //调用DbHelperOleDb自定义类中的ExecuteReader方法,它返回的是一个OleDbDataReader型
  OleDbDataReader dr = dbAccess.DbHelperOleDb.ExecuteReader(strSql);
  int i = 0;
  while (dr.Read())
  {
    if (i == 0)
    {
      intArray[i] = Convert.ToDateTime(dr["data"].ToString()).Day;
      string a=Convert.ToString(intArray[i]);
      i++;
    }
    else if (Convert.ToDateTime(dr["data"].ToString()).Day != intArray[i - 1])
    {
      intArray[i] = Convert.ToDateTime(dr["data"].ToString()).Day;
      i++;
    }
  }
  return intArray;
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn