aspx:
<asp:Calendar ID="Calendar1" runat="server" OnDayRender="Calendar1_DayRender"></asp:Calendar>cs:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {    }    public CheckBox CreateCheckBox()
    {
        CheckBox chk = new CheckBox();
        chk.ID = "dd";
        chk.Checked = true;
        chk.BorderColor = System.Drawing.Color.BlueViolet;
        chk.AutoPostBack = true;
        chk.CheckedChanged += new EventHandler(chk_Changed); 
        return chk;
    }    public void chk_Changed(Object sender, EventArgs e)
    {
        Response.Write("<script language=javascript>alert(\"ffgfg\")</" + "script>");
    }    protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
    {
        DateTime myAppointment = new DateTime(2007, 5, 24);
        if (e.Day.Date == myAppointment)
        {
            e.Cell.Controls.RemoveAt(0);
            e.Cell.Controls.Add(CreateCheckBox());
        }
        else
        {
            e.Day.IsSelectable = false;
        }
    }
}
chk.AutoPostBack = true;
chk.CheckedChanged += new EventHandler(chk_Changed); 
这两句怎么不起作用啊~~

解决方案 »

  1.   

    CreateCheckBox()放在page load里面,postback的时候调用
      

  2.   

    楼上的什么意思啊
    是不是这样
    Page_load()
    {
        checkbox chk = createcheckbox();
    }    protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
        {
            DateTime myAppointment = new DateTime(2007, 5, 24);
            if (e.Day.Date == myAppointment)
            {
                e.Cell.Controls.RemoveAt(0);
                e.Cell.Controls.Add(chk);
            }
            else
            {
                e.Day.IsSelectable = false;
            }
        }
      

  3.   

    e.Cell.Controls.Add(CreateCheckBox());===>  e.Cell.Controls.Add(CreateCheckBox());
    加一句 ViewState["Added"] = "1";
      

  4.   

    然后在Page_Load中if(ViewState["Added"] != null)
    {
      //调用添加控件.
    }
      

  5.   

    恩 
    if (e.Day.Date == myAppointment)
    {
    e.Cell.Controls.RemoveAt(0);
    e.Cell.Controls.Add(CreateCheckBox());
    ViewState["Added"] = "1";
    }Page_Load:
    if(ViewState["Added"] != null)
    {
    CreateCheckBox();
    }
      

  6.   

    因为你是动态加载的,所以每次Page_Load时都要初始化一下,不然就没有了。
      

  7.   

    那为什么我在panel或其他控件里动态加载就行啊
      

  8.   

    应该是日历控件的问题现在还没有到第二步,第一步就不行.即postback就不行.应该是日历控件的问题,用其他方法代替.