none
js返回父页面SELECT错误. RRS feed

  • 问题

  • <script language=javascript> window.opener.document.all.dropAgentName.options.add(new Option("天津誉鑫集团有限公司","21169
    "));window.close();错误提示:httpfile:未指明错误!
    问题说明:选择企业的时候,企业太多,下拉框不方便,我就在右侧用了一个弹出按钮,然后把返回的值送回父页面,直接让父页面的DROPDOWNLIST新插入一个OPTION.出现此错误.我是用RESPONSE.WRITE写的上面句子.

    yaoyao
    2009年7月6日 9:48

答案

  • 大家好,我终于搞定了.
    我尝试了大家给我提的方案,还是不行,但是非常感谢回复的每一位伙伴.
    我发现主要是这句代码无法正确执行:window.opener.document.all.controlid.options.add(new Option(....;
    而改成其他的就没有问题.我只好把要返回的企业名称和CODE返回给我放在父页面的两个HIDDEN.
    然后再调用一个父页面函数,当这个HIDDEN值不为空的时候生成OPTION,添加到DROPDOWNLIST下面.终于完成了.
    谢谢大家给我继续下去的信心.
    yaoyao
    2009年7月7日 6:52

全部回复

  • 1 建议做到一个页面中,企业多,可以按企业名称或编号排序后再绑定
    2 使用 ClientScript 输出你的脚本
    ClientScript.RegisterClientScriptBlock(this.GetType(), "X1", "window.opener.document.all.dropAgentName.options.add(new Option(\"天津誉鑫集团有限公司\",\"21169\"));window.close();", true);


    知识改变命运,奋斗成就人生!
    2009年7月6日 10:02
    版主
  • 企业有一万多条,已经排过序了.
    使用客户端脚本注册也测试了不行.
    不过非常感谢你的回应.


    yaoyao
    2009年7月6日 10:11
  • 楼主,描述的问题,我不太明白。我这样理解看对不对?
       弹出按钮 是弹出模式对话框?  你说用下拉框不方便,那dropAgentName是用作什么的?
       可以这样吗?父页面用文本框 ,后面弹出按钮点击后,弹出模式对话框,里面用gridview显示所有企业信息(带自定义分页和查询),选择合适的企业,返回值给父窗体的文本框。
    2009年7月6日 11:54
  • hi,
       你的企业目录要放到下拉框里,信息10000多条,这个有赛选条件吗?绑定如此多的数据对页面来说确实是个问题,不管是性能还是实现,客户端操作也很麻烦。
    你可以使用分页,在弹出页面里使用分页查询,客户可以分页,也可以根据关键字查询。选择完毕后值返回给你的父页面。
    下拉框确实针对大量数据的时候不是很好。


    Frank.Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    老徐的博客:http://frank_xl.cnblogs.com
    2009年7月6日 12:27
    版主
  • 那么多数据没有必要全面加载到页面中,用户需要看的只是少数建议你使用过滤+分页来实现你的功能
    知识改变命运,奋斗成就人生!
    2009年7月6日 12:37
    版主
  • 肯定是性能造成了崩溃,建议多分一些选项,或者分页和查找进行实现。
    我的博客,最近新写了一个Windows Mobile 6.5 Widget开发的文章,欢迎捧场
    尽力回答每一个问题,但不代表一定正确,希望初学者能够多自己尝试。。共勉。。:)
    2009年7月6日 13:54
    版主
  • 首先说明一下, 我没这样做过, 不过我想下面两种方案应该可行:

    1. 第一种方法:下面是我写过的 从一个框架赋值到另一个框架 的JS代码, 你换成你的然后试试
    Form1.hidden1.value=parent.leftFrame.form1.btn.value
    2. 第二种方法:你可以将本页的值暂存起来, 如存到Session, 然后本页选择完后就刷新父页面

    刚进入时:
    <% If Session("abc")="" Then %>
    ...
    <% End If %>
    
    赋值后:
    <% If Session("abc")<>"" Then %>
    ...
    <% End If %>
    

    Simple life, Simple love ..
    2009年7月6日 14:33
  • 楼主,你好

    “httpfile”是什么东西,你跟踪下试试。


    Microsoft Online Community Support
    2009年7月7日 2:58
  • 谢谢回复.
    弹出的是一个新的窗口,dropAgentName是父页面的一个下拉框.不能使用文本框,是因为要获取的不是企业的名称,而是企业的CODE,总不能让前台显示CODE吧.
    你其他的理解跟我做的一样.


    yaoyao
    2009年7月7日 3:34
  • 我的代码如下:          
      strbd.Append("<script language=\"javascript\"> window.opener.document.all." + kw[3] + "");
                strbd.Append(".options.add(new Option(\"" + sname + "\",\"" + code + "\"));");
                strbd.Append("window.close();</script>");
               // this.ClientScript.RegisterStartupScript(this.GetType(), "",strbd.ToString(),true);
                Response.Write(strbd.ToString());
    问题就出在这部分.中断的时候我发现生成的客户端代码是这样的:
    <script language="javascript"> window.opener.document.all.dropAgentName.options.add(new Option("天津誉鑫集团有限公司","21169"));window.close();<
    怎么后面是不完整的呢?

    yaoyao
    2009年7月7日 3:52
  • 可能是你页面上其它的东西影响了,建立一个空白页试试。
    知识改变命运,奋斗成就人生!
    2009年7月7日 4:55
    版主
  • 建议使用ClientScriptManager来管理脚本。不过
    strbd.Append("<script language=\"javascript\"> window.opener.document.all." + kw[3] + "");
                strbd.Append(".options.add(new Option(\"" + sname + "\",\"" + code + "\"));");
                strbd.Append("window.close();</script>");
    也该可以。你试试
    strbd.Append("<script language=\"javascript\"> window.opener.document.all." + kw[3] + "");
                strbd.Append(".options.add(new Option(\"" + sname + "\",\"" + code + "\"));");
                strbd.Append("window.close();</“ + ”script>");
    是否还截断、
    【孟子E章】
    2009年7月7日 4:58
    版主
  • 建议使用ClientScriptManager来管理脚本。不过
    strbd.Append("<script language=\"javascript\"> window.opener.document.all." + kw[3] + "");
                strbd.Append(".options.add(new Option(\"" + sname + "\",\"" + code + "\"));");
                strbd.Append("window.close();</script>");
    也该可以。你试试
    strbd.Append("<script language=\"javascript\"> window.opener.document.all." + kw[3] + "");
                strbd.Append(".options.add(new Option(\"" + sname + "\",\"" + code + "\"));");
                strbd.Append("window.close();</“ + ”script>");
    是否还截断、
    【孟子E章】

    1. 个人感觉你的代码后面不完整, 应该和HTML标记有关系,可以试下上面高手的那招</"+"script>
    Simple life, Simple love ..
    2009年7月7日 5:27
  • 大家好,我终于搞定了.
    我尝试了大家给我提的方案,还是不行,但是非常感谢回复的每一位伙伴.
    我发现主要是这句代码无法正确执行:window.opener.document.all.controlid.options.add(new Option(....;
    而改成其他的就没有问题.我只好把要返回的企业名称和CODE返回给我放在父页面的两个HIDDEN.
    然后再调用一个父页面函数,当这个HIDDEN值不为空的时候生成OPTION,添加到DROPDOWNLIST下面.终于完成了.
    谢谢大家给我继续下去的信心.
    yaoyao
    2009年7月7日 6:52
  • 不错,多多尝试,提高得更快
    知识改变命运,奋斗成就人生!
    2009年7月7日 6:55
    版主
  • 自找麻烦!parent..window.document.all.dropAgentName.options.add(new Option("天津誉鑫集团有限公司","21169
    "));window.close();或者
    opener.window.document.all.dropAgentName.options.add(new Option("天津誉鑫集团有限公司","21169
    "));window.close(); 这其中一定可以的。你要多调试。我经常用!
    2009年7月16日 14:57