如何从一个控件调用一个事件处理程序到第二个控件在第一个控件内的另一个控件?

时间:2010-11-11 09:37:57

标签: c# asp.net

我有这样的日历控件

    <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)
    {
    }

但是当我更改下拉列表的项目时,这并没有起火。请帮忙

3 个答案:

答案 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事件发生之前重新创建动态控制树。如果你能做到这一点,你可能会发现你的事件会正常发生。