-1

データベース内の私のテーブルには、id、eventstart、eventend、eventnameの列があります

発生している日付のカレンダーのセルにイベント名とイベント開始日をバインドしようとしています

しかし、私はそうすることができません

以下は私のコードスニペットです

  protected void myCal_DayRender1(object sender, DayRenderEventArgs e)
{
    DataSet ds = new DataSet();

    SqlDataAdapter cmd = new SqlDataAdapter("Select * FROM event", con);
    cmd.Fill(ds, "Table");
    if (!e.Day.IsOtherMonth)
    {
        foreach (DataRow dr in ds.Tables[0].Rows)
        {
            if ((dr["eventstart"].ToString() != DBNull.Value.ToString()))
            {
                DateTime dtEvent = (DateTime)dr["eventstart"];
                if (dtEvent.Equals(e.Day.Date))
                {

                    Label lbl = new Label();
                    lbl.BorderColor = System.Drawing.Color.Black;
                    lbl.BorderStyle = BorderStyle.Double;
                    lbl.Width = 100;
                    lbl.Height = 100;
                    lbl.BackColor = System.Drawing.Color.BlanchedAlmond;
                    lbl.Text = TextBoxName.Text + "" + TextBoxStart.Text + "" + TextBoxEnd.Text;
                    e.Cell.Controls.Add(lbl);


                }
            }
        }
    }
    else
    {


      }

}

誰かを助けてください

4

1 に答える 1

1

よし、もう一度最初から。今、私はそれを手に入れたと思います。あなたの問題はおそらく日付と時刻を比較することによって引き起こされます。時刻なしで日付のみを取得するには、以下のように使用dt.Dateできます。パフォーマンス上の理由から、ページの読み込み時にすべてのデータを読み込むことを検討できます。

DataSet ds = new DataSet();        

protected void Page_Load(object sender, EventArgs e)
{
    //get data
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter();
        adapter.SelectCommand = 
            new SqlCommand("select * from event", connection);
        adapter.Fill(ds);
    }
}

protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{        
    //mark dates in calendar
    foreach (DataRow dr in ds.Tables[0].Rows)
    {           
        DateTime dt = (DateTime)dr.Field<DateTime?>("eventstart");

        if (e.Day.Date == dt.Date)           
            {    
                e.Cell.BackColor = System.Drawing.Color.Yellow;

                //add event lable to day
                Label lbl = new Label();
                lbl.BorderColor = System.Drawing.Color.Black;
                lbl.BorderStyle = BorderStyle.Double;
                lbl.BackColor = System.Drawing.Color.BlanchedAlmond;
                lbl.Text = "Event text";
                e.Cell.Controls.Add(lbl);            
            }
    }
}
于 2012-09-20T16:51:59.970 に答える