当前位置:编程学习 > C#/ASP.NET >>

请问谁知道母板内控件回调处理过程

我发现,在页面处理回调过程,没有什么问题,但把这个过程写在母板内的用户控件中,却不能用,JS报错?不知谁用过,是否这有这方面的经验,另外,在母板内的用户控件中,对<asp:TextBox之类,用其document.forms[0].elements[""]或document.getElementById(id),也找不到相应控件,不知如何处理? --------------------编程问答-------------------- <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;
    }
请问有谁遇到过相似问题?如何编写? --------------------编程问答-------------------- onclick="CallServer(txtEnter,lblShow)
——————————————————————————————————————————
不要随便写“txtEnter、lblShow”。 --------------------编程问答-------------------- 说过无数次了,控件的客户端ID应该使用ClientID,不能想当然地胡写。 --------------------编程问答-------------------- 谢谢,我再试试 --------------------编程问答-------------------- 对不起,试了,还是没有,报错,现为 <input id="btnSubmit" type="button" value="提交" onclick="CallServer(txtEnter.ClientID,lblShow.ClientID)" /> --------------------编程问答-------------------- 你写的那个语法上就不是服务器上执行的。 --------------------编程问答-------------------- 问题是onclick="CallServer(txtEnter,lblShow)" 在页面可以运行,放到用户控件就不行了,就报错,而CallServer中的参数设置是控件的,通过传递,送入服务器进行操作,其它调用,如Page.ClientScript.RegisterStartupScript(this.GetType(), "dgscript", "<script Language=\"Javascript\">document.all." + this.txtusername.ClientID.Trim() + ".focus()</script>");在后台运行正确 --------------------编程问答-------------------- 你那个当作一个字符串(html对象的属性)输出给浏览器。客户端连txtEnter对象都没有,哪有txtEnter.ClientID?这是服务器端对象,就要使用服务器端可执行的代码写法。

例如我通常写为:

  btnSubmit.Attributes["onclick"]="CallServer(document.all."+txtEnter.ClientID+
    ",document.all."+lblShow.ClientID+");";

注意,这语句是服务器可执行代码,不是客户端脚本。 --------------------编程问答-------------------- 谢谢你,老兄,问题已解决,祝你好运.设置成<input id="btnSubmit" type="button" value="提交" runat="server"/>,后台加上你给内容就行了. --------------------编程问答-------------------- 撒泡尿,作个记号,以后用得着。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,