部分代码:
[Bindable(true),
Category("Appearance"),
DefaultValue("")]
public string CodeURL
{
get
{
return m_codeURL;
}
set
{
m_codeURL = value;
}
}
/// <summary>
/// 将此控件呈现给指定的输出参数。
/// </summary>
/// <param name="output"> 要写出到的 HTML 编写器 </param>
protected override void Render(HtmlTextWriter output)
{
if(this.Text=="")
this.Text = this.GetCurrentDate(); output.AddAttribute("onclick","calendar()");

if(this.CodeURL!="")
output.WriteBeginTag("script language='JavaScript' src='"+this.CodeURL+"'");
else
output.WriteBeginTag("script language='JavaScript' src='js/calendar.js'");
output.Write(">");
output.WriteEndTag("script");

this.ToolTip = "单击此处选择日期时间!"; base.Render(output);
}但是这样的话 如果我在一个页面中使用两个以上的此控件 调用javascript的代码就会出现多个 如:
<script language='JavaScript' src='js/calendar.js'></script>;
出现了多个 就会报错! 我该怎么写 才能在同个页面中使用多个此控件 同时只输入一个javascript调用呢?

解决方案 »

  1.   

    给你的Js起个名如用全球唯一标识
    private const string SCP_FILTER_ONLY_SCRIPT_ID=
    "{F3AE6520-1ED9-4422-B1FD-22B725BF7DDBA}"; private void BuildJavaScript()
    {
    StringBuilder sb=new StringBuilder();
    sb.Append("<script language=\"JavaScript\">\n");
    sb.Append("function FilterText(ctrl,msg)\n");
    sb.Append("{\n");
    sb.Append("var s,ss;\n");
    sb.Append("s=ctrl.value;\n");
    sb.Append("ss=msg.split(\",\");\n");
    sb.Append("for (var i = 0; i < ss.length; i++)\n");
    sb.Append("{\n");
    sb.Append("s=s.replace(ss[i],\"*\");\n");
    sb.Append("}\n");
    sb.Append("ctrl.value=s;\n");
    sb.Append("}\n");
    sb.Append("</script>");
    if (!Page.IsClientScriptBlockRegistered(SCP_FILTER_ONLY_SCRIPT_ID))
    Page.RegisterClientScriptBlock(SCP_FILTER_ONLY_SCRIPT_ID,sb.ToString());

    }
      

  2.   

    试试在OnPreRender事件里使用Page.RegisterClientScriptBlock 方法注册上述脚本代码
      

  3.   

    listhome(我听见猪来自地铁和人海) 
    不行啊 还是输出多次