Этот кусок из Custom Control. Думаю, разберешься:
protected override void OnPreRender(EventArgs e)
{
StringBuilder sbFunction = new StringBuilder();
StringBuilder sbStartupScript = new StringBuilder();
if(!this.Page.IsClientScriptBlockRegistered("LabelScript" + this.ClientID))
{
sbFunction.Append("");
sbFunction.Append("function ChangeLabelText"
+ this.ClientID + "(id){");
sbFunction.Append("var lblDisplay=document.getElementById('lblDisplayText"
+ this.ClientID + "');");
sbFunction.Append("var ddlDropDown=document.getElementById(id);");
sbFunction.Append("lblDisplay.innerText=ddlDropDown.value;}");
sbFunction.Append("");
this.Page.RegisterClientScriptBlock("LabelScript" + this.ClientID, sbFunction.ToString());
}
if(!this.Page.IsStartupScriptRegistered("LabelStartupScript" + this.ClientID))
{
sbStartupScript.Append("");
sbStartupScript.Append("ChangeLabelText"
+ this.ClientID + "('" + this.ClientID + "');");
sbStartupScript.Append("");
Page.RegisterStartupScript("LabelStartupScript"
+ this.ClientID, sbStartupScript.ToString());
}
this.Attributes["onchange"] = "ChangeLabelText" + this.ClientID + "('"
+ this.ClientID + "')";
base.OnPreRender(e);
}
Здесь регистрятся два скрипта - один будет выполняться при загрузке (Page.RegisterStartupScript), другой по событию позже. В примере применяются идентификаторы скриптов (... + this.ClientID)- на случай, если каждому контролу нужен свой скрипт. Если один скрипт может обслужить много контролов, то просто проверка есть ли такой(if(!this.Page.IsClientScriptBlockRegistered("LabelScript")))
Перевернув мир - оглянись, может перевернулся ты сам?!