2012-02-09 11 views
0

私はデータベースに保存されているいくつかのメモ/イベントを含むカレンダーを表示したいと思います。 複数のノートが追加されている日付もあります。複数のノートを同じ日付に表示する

ページが読み込まれるとき、私はそれをすべて私のカレンダーコントロールに入れます。

私はこれを行ったが、同じ日付に複数の音符を保存したにもかかわらず、カレンダーには1つの音符しか表示されない。

私のコードは

...以下の通りであるそれは私が2枚のメモを追加した日7 ..に画像以下のようにこの画像では enter image description here

に見えるが、それは一つだけを表示...

public partial class _Default : System.Web.UI.Page 

{ 

    public static ArrayList MyColllection; 

    //Structure 

    public struct My_Date 

    { 

     public DateTime Cal_Date; 

     public string Cal_Type; 

     public string Cal_Title; 

    } 

    protected void Page_Load(object sender, EventArgs e) 

    { 

     if (!Page.IsPostBack) 

     { 

      MyColllection = Get_Event(); 

     } 

    } 

    public ArrayList Get_Event() 

    { 

     SqlConnection myCon = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]); 

     SqlCommand myComd = new SqlCommand("SELECT * FROM Cal_Event",myCon); 

     SqlDataReader myDataReader; 

     try 

     { 

      myCon.Open(); 

      myDataReader = myComd.ExecuteReader(); 

      MyColllection = new ArrayList(); 

      My_Date temp; 

      //Iterate through the data reader 

      while(myDataReader.Read()) 

      { 

       temp.Cal_Title = myDataReader.GetValue(1).ToString(); 

       temp.Cal_Date = Convert.ToDateTime(myDataReader.GetValue(2)); 

       temp.Cal_Type = myDataReader.GetValue(3).ToString(); 

       MyColllection.Add(temp); 

      } 

     } 

     catch 

     {} 

     finally 

     { 

      myCon.Close(); 

     } 

     return MyColllection; 

    } 

    public void Calendar1_DayRender(object o, DayRenderEventArgs e) 

    { 

     string FontColor; 

     string compDate = "01/01/1900"; // Date to compare initially 

     DateTime DayVal = Convert.ToDateTime(compDate); 

     bool mItemDay = false; 

     bool dayTextChanged = false; 

     StringBuilder strTemp = new StringBuilder(); 

     foreach (My_Date temp_dt in MyColllection) 

     { 

      if ("01/01/1900" != temp_dt.Cal_Date.ToShortDateString()) 

      { 

       if (dayTextChanged == true) 

       { 

        break; 

       } 

       mItemDay = false; 

       DayVal = temp_dt.Cal_Date; 

      } 

      else 

      { 

       mItemDay = true; 

      } 

      if (e.Day.Date == Convert.ToDateTime(temp_dt.Cal_Date.ToString("d"))) 

      { 

       switch (temp_dt.Cal_Type) 

       { 

        case "1" : 

         FontColor = "Blue"; 

         break; 

        case "2": 

         FontColor = "Red"; 

         break; 

        default: 

         FontColor = "Black"; 

         break; 

       } 

       if (mItemDay == false) 

       { 

        strTemp = new StringBuilder(); 

       } 

       else 

       { 

        strTemp.Append("<br>"); 

       } 

       strTemp.Append("<span style='font-family:verdana;font-size:10px;font-weight:bold;color'"); 

       strTemp.Append(FontColor); 

       strTemp.Append("'><br>"); 

       strTemp.Append(temp_dt.Cal_Title.ToString()); 

       strTemp.Append("</span>"); 

       e.Cell.BackColor = System.Drawing.Color.Yellow; 

       dayTextChanged = true; 

      } 

     } 

     if (dayTextChanged == true) 

     { 

      e.Cell.Controls.Add(new LiteralControl(strTemp.ToString())); 

     } 

    } 

} 

私は同じ日に複数のノートを表示する必要があります...

どうすればいいですか?事前に

おかげで....

答えて

1

カレンダーは、基本的には、日付ピッカーで、データを表示するためにそれらを使用することで、人々が作る最も一般的なミスの一つです。あなたのデータ/イベントを表示するには、ListViewを使用します。カレンダーはそのためのものではありませんでした。

いくつかのステージでは、同じ日にイベントが追加されるとカレンダーセルが伸びて、ディスプレイ全体が破損します。そして、あなたが限界を設定しようとすると、人々は、他のイベントが列挙されていない理由などを尋ね始めます。

あなたのコードでは、あなたは基本的に例外。 try-catch-finallyをコメントアウトして(Close()を終了して)、エラーを確認してください:)

関連する問題