我想在TreeView1_SelectedNodeChanged事件中调用前台JS中的代码,请问应该怎么调用
RegisterStartupScript这个方法不能调用不知道为什么!,难道.NET的树型控件不能这样用?
各位大侠不知道有没有好的方法

解决方案 »

  1.   

    1. 用Response.Write方法写入脚本比如在你单击按钮后,先操作数据库,完了后显示已经完成,可以在最后想调用的地方写上
    Response.Write("<script type='text/javascript'>alert();</script>");这个方法有个缺陷就是不能调用脚本文件中的自定义的函数,只能调用内部函数,具体调用自定义的函数只能在Response.Write写上函数定义,比如Response.Write("<script type='text/javascript'>function myfun(){...}</script>");2.用ClientScript类动态添加脚本    用法如下:在想调用某个javascript脚本函数的地方添加代码,注意要保证MyFun已经在脚本文件中定义过了。    ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>MyFun();</script>");这个方法比Response.Write更方便一些,可以直接调用脚本文件中的自定义函数。
      

  2.   

    这不可以啊,我在用.NET树型控件的时候调用不到它,但在其它地方就可以,不知道为什么
      

  3.   

    http://topic.csdn.net/u/20090730/14/3521bd67-f240-4be5-990c-3ec0ff11ba95.html去看看 跟你说的 差不多
    Page.Response.Write("<script>var response;</script>");    Page.RegisterStartupScript("RegisterStartupScript","<script>var RegisterStartupScript;</script>");    Page.RegisterClientScriptBlock("RegisterClientScriptBlock","<script>var RegisterClientScriptBlock;</script>");   Response.Write输出后的位置在源文件的第一行. RegisterClientScriptBlock输出后的位置会在<form>的下一行.(在asp.net自带的脚本和一些隐藏域之下). RegisterStartupScript输出后的位置会在</form>的上一行.RegisterClientScriptBlock的原型与RegisterStartupScript相同,两个函数不同在于将其包含的脚本代码写入到HTML文件的不同位置.RegisterClientScriptBlock在 Page 对象的 元素的开始标记后立即发出客户端脚本,RegisterStartupScript则是在Page 对象的 元素的结束标记之前发出该脚本。如果你的脚本有与页面对象(doucument对象)进行交互的语句,则推荐使用RegisterStartupScript,反之如果要想客户端脚本尽可能早的执行,则可以使用RegisterClientScriptBlock或Response.Write。RegisterClientScriptBlock一般返回的是客户端函数的包装,而RegisterStartupScript返回得函数在document装载完成后会执行,类似于我们平时所说的body onload="f()"里面的函数;这两个方法在客户端呈现的代码位置不同,RegisterClientScriptBlock在<form runat=server>之后,而RegisterStartupScript在</form>之前。补充例子:
    ....
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form name="Form1" method="post" action="WebForm6.aspx" id="Form1">
               <input type="hidden" name="__VIEWSTATE" value="dDw3MzU1MTQ5MzY7Oz6nugrEg+5T6RC7MTIuLoIrMLQLPw==" />
    <script>function block(){}</script>    ------------>RegisterClientScriptBlock()方法输出的在这里
    <input name="TextBox1" type="text" id="TextBox1" style="Z-INDEX: 101; LEFT: 296px; POSITION: absolute; TOP: 120px" />            <script>function startup(){}</script> ------------>RegisterStartupScript()方法输出的在这里</form>
    </body>
    </HTML>
      

  4.   

     protected void Page_Load(object sender, EventArgs e)
        { 
            if (!IsPostBack)
            {
    //这里使用正常
    this.Page.ClientScript.RegisterStartupScript("dd", "<script>InitId(5,8);</script>");
                InitTree();
            }
        } protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
        {
    //这里就不能使用了,不知道为什么
            this.Page.ClientScript.RegisterStartupScript("dd", "<script>InitId(5,8);</script>");               }