Asp.net 未呈现自定义DropDownList上的OnChange属性

Asp.net 未呈现自定义DropDownList上的OnChange属性,asp.net,attributes,drop-down-menu,custom-controls,Asp.net,Attributes,Drop Down Menu,Custom Controls,我有一个自定义usercontrol,它基本上是一个dropdownlist,预先填充了数据库中的值 <asp:DropDownList ID="selResponseTimes" runat="server" SkinID="filterSkin"> </asp:DropDownList> 该控件按如下方式添加到“我的页面”,效果良好: <asp:ResponseTimesDropDown runat="server" ID="s

我有一个自定义usercontrol,它基本上是一个dropdownlist,预先填充了数据库中的值

<asp:DropDownList ID="selResponseTimes" runat="server" SkinID="filterSkin">                
</asp:DropDownList>
该控件按如下方式添加到“我的页面”,效果良好:

<asp:ResponseTimesDropDown runat="server" ID="selResponse" />
但是,当我尝试使用自定义控件执行此操作时,它们不会被添加

selResponse.Attributes.Add("onchange", "CalculateResponseTime()");

但是,如果我调试代码,属性将被添加到集合中,那么它们似乎不会被输出到页面中。这是为什么?

在页面生命周期的哪个阶段添加属性

尝试在
页面_Init

Protected void Page_Init(object sender, EventArgs e)
{
    selResponse.Attributes.Add("onchange", "CalculateResponseTime()");
}
编辑(见评论):

Public void CalculateResponseEnabled()
{
        selResponseTimes.Attributes.Add("onchange", "CalculateResponseTime()");
}
然后在from中,您可以调用CalculateResponseed by do

selResponse.CalculateResponseEnabled();

我也有同样的问题。我将代码添加到我使用的特定控件的OnPreRender事件中,它开始工作。

您能给我们展示一下JavaScript和html部分吗?还要尝试设置“CheckRelatedCall();return false;”和“CalculateResponsetTime();return false;”以查看是否有效。这与此无关,我永远无法调用javascript,因为我无法成功地将onchange属性添加到控件中。我的假设是,因为我能够在
Page\u Load
事件中为标准控件添加属性,而不是我的自定义控件,这是因为控件已经呈现,所以我需要在早期阶段添加属性?您需要将
onchange
事件添加到控件中的
DropDownList
。谢谢,我已经这样做了,但我认为这是一个黑客,因为我有这种控制的实例,在那里我不开火客户端事件,所以不得不在这些页面上包含一个空函数。对不起,我在PaGyLoad中添加它们,我也在PaGyPrimeIdter中试用它们无效。刚刚在那里尝试了Page_Init,但没有成功。是否有任何理由从窗体而不是在控件中添加它?如果您将它添加到selResponseTimes控件中,它应该可以工作。我的逻辑是,这是一个可重用的控件。我不一定希望每次使用控件时都有一个客户端onchange事件,就在这个特定的页面上。我更新了答案,不使用属性,只需调用一个方法来添加它。让我知道情况如何我很高兴能帮上忙。也许最好删除上面一些答案中没有用到的评论。
Public void CalculateResponseEnabled()
{
        selResponseTimes.Attributes.Add("onchange", "CalculateResponseTime()");
}
selResponse.CalculateResponseEnabled();