我有一个自定义用户控件,它基本上是一个下拉列表,预先填充了数据库中的值。
<asp:DropDownList ID="selResponseTimes" runat="server" SkinID="filterSkin">
</asp:DropDownList>
代码背后:
public partial class Response_Times_Drop_Down : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable objDataTable = DAL.ExecuteDataTable("sp_cl_Response_Times_Get", null);
selResponseTimes.DataSource = objDataTable;
selResponseTimes.DataTextField = "TM_Code";
selResponseTimes.DataValueField = "TM_Code";
selResponseTimes.DataBind();
}
}
public string SelectedValue
{
get
{
return selResponseTimes.SelectedValue;
}
set
{
selResponseTimes.SelectedValue = value;
}
}
}
控件按如下方式添加到我的页面,并且工作正常:
<asp:ResponseTimesDropDown runat="server" ID="selResponse" />
我正在使用以下内容将客户端事件作为属性添加到Page_Load
上的标准控件:
txtCallRelatedCall.Attributes.Add("onblur", "CheckRelatedCall()");
但是,当我尝试使用自定义控件执行此操作时,它们不会被添加。
selResponse.Attributes.Add("onchange", "CalculateResponseTime()");
但是,如果我调试代码,属性将被添加到集合中,看起来它们只是没有输出到页面。这是为什么?
答案 0 :(得分:2)
在页面生命周期的哪个阶段添加属性?
尝试在Page_Init
Protected void Page_Init(object sender, EventArgs e)
{
selResponse.Attributes.Add("onchange", "CalculateResponseTime()");
}
编辑(见评论):
Public void CalculateResponseEnabled()
{
selResponseTimes.Attributes.Add("onchange", "CalculateResponseTime()");
}
然后在from中你可以通过执行来调用CalculateResponseEnabled。
selResponse.CalculateResponseEnabled();
答案 1 :(得分:0)
我有同样的问题。我将我的代码添加到我正在使用的特定控件的OnPreRender事件中,它开始工作。