<script language="javascript" type="text/javascript">
function CallServer(inputcontrol,context)
{
   if(confirm("你确信需要全部取消吗?"))
   {
    context.innerHTML="加载中...";
    arg=inputcontrol.value;
    <%=Page.ClientScript.GetCallbackEventReference(this,"arg","ReceiveServerData","context") %>
   }
   else
   {
    return false;
   }
}function ReceiveServerData(result,context)
{
   context.innerHTML=result;
}
</script>
     请输入信息:<asp:TextBox ID="txtEnter" runat="server"></asp:TextBox>
     <input id="btnSubmit" type="button" value="提交" onclick="CallServer(txtEnter,lblShow)" />
      <br />
      <asp:Label ID="lblShow" runat="server"></asp:Label>后台
//引发回调事件处理
    public void RaiseCallbackEvent(string eventArgument)
    {
        //"eventArgument"为从客户端的JavaScript传递过来的参数
        result = "从服务器端返回的内容:" + eventArgument;
    }    //回传回调结果
    public string GetCallbackResult()
    {
        return result;
    }
请问有谁遇到过相似问题?如何编写?

解决方案 »

  1.   

    onclick="CallServer(txtEnter,lblShow)
    ——————————————————————————————————————————
    不要随便写“txtEnter、lblShow”。
      

  2.   

    说过无数次了,控件的客户端ID应该使用ClientID,不能想当然地胡写。
      

  3.   

    对不起,试了,还是没有,报错,现为 <input id="btnSubmit" type="button" value="提交" onclick="CallServer(txtEnter.ClientID,lblShow.ClientID)" />
      

  4.   

    问题是onclick="CallServer(txtEnter,lblShow)" 在页面可以运行,放到用户控件就不行了,就报错,而CallServer中的参数设置是控件的,通过传递,送入服务器进行操作,其它调用,如Page.ClientScript.RegisterStartupScript(this.GetType(), "dgscript", "<script Language=\"Javascript\">document.all." + this.txtusername.ClientID.Trim() + ".focus()</script>");在后台运行正确
      

  5.   

    你那个当作一个字符串(html对象的属性)输出给浏览器。客户端连txtEnter对象都没有,哪有txtEnter.ClientID?这是服务器端对象,就要使用服务器端可执行的代码写法。例如我通常写为:  btnSubmit.Attributes["onclick"]="CallServer(document.all."+txtEnter.ClientID+
        ",document.all."+lblShow.ClientID+");";注意,这语句是服务器可执行代码,不是客户端脚本。
      

  6.   

    谢谢你,老兄,问题已解决,祝你好运.设置成<input id="btnSubmit" type="button" value="提交" runat="server"/>,后台加上你给内容就行了.