Page.RegisterClientScriptBlock("info","<script>DoClient();</script>");

解决方案 »

  1.   

    可以设置一个标志位来解决这个问题;
    1.建立一个服务端控件及其处理函数。
    2.设置一个隐含控件做为标志位设置值为false;
    3.在服务端的处理函数处理业务完成以后,设置该隐含变量的值为true.
    4.添加一个javascript<body onload="DoClient()">,在该函数中对隐含变量的值进行判断,如果服务器端对隐含控件的值设置为了true就进行自己客户端的调用.
    5.在page_unload()事件中记得清除设置回变量值为false;或者在DoClient()以后将标志位设置为false也可。方法很笨,希望有用 ;)
      

  2.   

    不行,还是说DoClient没有定义,但把DoClient();改成alert("test");这样就可以,为什么自定义函数不能正常执行?
      

  3.   

    确保DoClient()函数写在页面上不是服务端
    <Script >
    functionDoClient()
    {
      var myvalue = document.all("flag").value;
      if( myvalue )
    {
    //...your business goes here
    }
    else
    {
    ;//nothing would happend
    }
    }
    </Script>
      

  4.   

    如果你的客户段脚本针对某个控件事件,可以直接在客户段写,比如<script language=vbscript event=onclick for=button1>你的DoClient内容</script>;如果你的客户段脚本做一些非针对控件事件的事情,可以在你客户段脚本中引用的那些控件的声明位置后的某个位置的脚本块中直接执行DoClient函数。不需要服务器端什么操作。
      

  5.   

    不行啊!
    我的客户端是这样的:
    function DoClient(){
    Form1.text1.value="<%=str%>";
    }
    服务端代码是这样的:
    Page.RegisterClientScriptBlock("info","<script>DoClient();</script>");
    运行后报错:Form1.text1为空或不是对象。
    怎么搞的?
      

  6.   

    script:
    function DoClient(strValue)
    {
    Form1.text1.value=strValue
    }C#
    Page.RegisterClientScriptBlock("","<script>DoClient('" + str + "');</script>");