button_click事件中调用前台的js方法,并传递参数如何调用???
Page.RegisterClientScriptBlock("", "<script language='javascript'>showDiv(" & Str & ")</script>");
经证实,这种方法无法让showDiv()执行我还想到了这个方法
在page_load中btn.Attributes.Add("OnClick", "javascript:showDiv()")但是我想要传递参数啊,而且参数是在btn的click事件中产生的..所以如果在page_load中注册,好像无法传递想要的参数
矛盾中....该如何成功的在click事件中调用前台的js函数,并传递参数呢 ?

解决方案 »

  1.   

    Page.RegisterClientScriptBlock("", "<script language='javascript'>showDiv(" & Str & ")</script>");------------------你用的vs 03 ?
      

  2.   


            ScriptManager.RegisterStartupScript(this, this.GetType(), Guid.NewGuid().ToString(), "time1('aaaaaaaaaa')", true);
      

  3.   


    string s = "aaa";   //你的参数
                Label l = new Label();
                l.Text = "<script>showDiv(" + s + ");</script>";
                Page.Controls.Add(l);
      

  4.   

    可以在 Button 里面的 OnClientClick  添加前端的JS
    先执行 JS函数 把需要的参数传到隐藏控件上面
    然后 执行OnClick 事件 
      

  5.   

    【但是我想要传递参数啊,而且参数是在btn的click事件中产生的..所以如果在page_load中注册,好像无法传递想要的参数】你这里就说的不对了、。当你点击btn的时候会再次进入到page_load中的。 
      

  6.   

    还有就是。。 你为什么要用到 服务器的button.?   不能用html的嘛。
      

  7.   

    to 27楼是这样的,当你点击btn的时候,确实,会再次走page_load,是先走page_load,然后才走btn_click的
      

  8.   

    能不能把code贴出来。
    还有就是可以考虑使用response.write("<script>.....</script>");
      

  9.   

       ScriptManager.RegisterStartupScript(this, this.GetType(), Guid.NewGuid().ToString(), "showDiv('"+str+"')", true);
    这样也不行?
      

  10.   

    Page.RegisterClientScriptBlock("", "<script language='javascript'>showDiv(str)</script>");
    btn.Attributes.Add("OnClick", "javascript:showDiv(" & Str & ")")
      

  11.   

    response.write("<script>.....</script>");这个一样,无法让showDiv()执行.....
      

  12.   

    还是建议你使用html的btn。 我就这个idea。
      

  13.   

      ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>testAction();</script>");你还可以使用以上方式。。这个一定可以的。
      

  14.   


    你这个的原理跟我写的那个是一样的,注册脚本,只不过我那个是针对framework 1.1,到2.0里面升级为你现在这种写法了而已...这样是注册上脚本了,但没执行
      

  15.   

    可以考虑在页面视图中:混写代码
    例如:
    var aa=<%=aa%>;
    ....
    不知道是否满足要求
      

  16.   


    貌似达不到呢,就想要在执行了click事件的时候,去执行前台的js
      

  17.   

    RegisterClientScriptBlock注册的脚本位置 是 <form> 后你说函数没调用 看看是不是 函数 在注册脚本的后面  ,通过右键查看源文件可知RegisterClientScriptBlock => RegisterStartupScript
      

  18.   


    我在showDiv()里面alert了,根本就没有弹出来,所以我认为是没执行 function showDiv(nr)
    {
        alert("开始调用") document.getElementById('divSm').style.visibility='visible';  alert("已经被调用")改成
            ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>showDiv(" & gpnrStr & ");</script>")
    依然没执行
      

  19.   

    <head runat="server">
        <script type="text/javascript">
    function showMessage()
    {
    alert("哈哈哈哈哈哈");
    }    </script>    <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" OnClientClick="showMessage();" />
            </div>
        </form>
    </body>
    </html>这样可以执行前端的 JS后 再执行 后台的OnClick
      

  20.   

    ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>showDiv('"+gpnrStr + "');</script>")
      

  21.   

    这样实在不行就只能尝试 Html的控件了。
      

  22.   

    这样实在不行就只能尝试 Html的控件了。
      

  23.   

    这样实在不行就只能尝试 Html的控件了。
      

  24.   

    一开始没看清楚  现在这样可以传参数了
    <head runat="server">
        <script type="text/javascript">
            function showMessage()
            {
            var hid = document.getElementById("HiddenField1");        alert(hid.value);
            }
        </script>
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <asp:HiddenField ID="HiddenField1" runat="server" />
                <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
            </div>
        </form>
    </body>
    </html>后台 protected void Button1_Click(object sender, EventArgs e)
        {
            HiddenField1.Value = "后台代码";
            ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>showMessage();</script>");
        }
    刚才测试过可以用 
    其实思路就是 拿个 隐藏控件来传值
      

  25.   


     protected void Button1_Click(object sender, EventArgs e)
        {
            ScriptManager.RegisterStartupScript(this, this.GetType(), Guid.NewGuid().ToString(), "showdiv('aaaaaaaaaa')", true);
            
        }
    js//
    <script language="javascript">
            function showdiv(str) {
                alert(str);
            }
        </script>不是这样用么? 
      

  26.   

    这样实在不行就只能尝试 Html的控件了。
      

  27.   

    我看到你那个&就有点奇怪了
    应该要用+来拼接的
      

  28.   


    呵呵,你觉得是&连接符的问题????
      

  29.   

    不是&的问题,是在传参的时候...
      

  30.   

    我这个是vb的老系统,&&
      

  31.   

     
    不是&amp;的问题吗?因为没用过&amp不懂!
    那是什么问题呢?