我有这样的日历控件
<asp:Calendar ID="CldrDemo" runat="server" BackColor="#FFFFCC" BorderColor="#FFCC66"
OnSelectionChanged="CldrDemo_SelectionChanged" OnDayRender="CldrDemo_DayRender">
</asp:Calendar>
OnDayRender事件我有这样的代码
protected void CldrDemo_DayRender(object sender, DayRenderEventArgs e)
{if (e.Day.Date == Convert.ToDateTime("11/30/2010"))//comparing date
{
DropDownList ddlBlist = new DropDownList();//creating instance of ddl
ddlBlist.AutoPostBack = true;
ddlBlist.Items.Add("Ashrith");//adding values to the ddl
ddlBlist.Items.Add("Nayeem");//adding values to the ddl
ddlBlist.SelectedIndexChanged += new EventHandler(ddlBlist_SelectedIndexChanged);//want to call this
string name = ddlBlist.SelectedItem.Text;
e.Cell.Controls.Add(ddlBlist);//adding dropdownlist to the cell
e.Cell.BorderColor = System.Drawing.Color.Black;
e.Cell.BorderWidth = 1;
e.Cell.BackColor = System.Drawing.Color.LightGray;
}
我想调用dropdownlist的事件处理程序 - selectedIndexchanged,我也像这样添加它
protected void ddlBlist_SelectedIndexChanged(object sender, EventArgs e)
{
}
但是当我更改下拉列表的项目时,这并没有起火。请帮忙
答案 0 :(得分:0)
试试这个
ddlBlist.SelectedIndexChanged + = new EventHandler(“ddlBlist_SelectedIndexChanged”);
答案 1 :(得分:0)
尝试将日历控件放在Ajax更新面板中 并在组合框中添加项目前添加此行:
ddlBlist.SelectedIndexChanged += new EventHandler(ddlBlist_SelectedIndexChanged);
ddlBlist.Items.Add("Ashrith");//adding values to the ddl
ddlBlist.Items.Add("Nayeem");//adding values to the ddl
答案 2 :(得分:0)
我相信为了让这个工作起作用,您需要在通常触发SelectedIndexChanged事件之前将下拉列表重新添加到控件集合中。
发生的事情是,你在渲染时动态添加你的控件,但是当发生回发时,控件实际上不再存在,或者至少在你的render方法被再次调用之前不会。所以事件不会发生。
根据我这样动态添加控件的经验,为了能够处理它们引发的任何事件,您需要能够在页面的Load事件发生之前重新创建动态控制树。如果你能做到这一点,你可能会发现你的事件会正常发生。