请问谁知道母板内控件回调处理过程
我发现,在页面处理回调过程,没有什么问题,但把这个过程写在母板内的用户控件中,却不能用,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