none
infopath中的列表框值无法被打印出来 RRS feed

  • 问题

  • 我用的是infopath2010制作的web 浏览器表单,里面有个域是列表框格式,见下图,其中我设置了两个数值可选1和2,可打印出来时列表框的数值是空的,无论是用IE打开此表单还是用infopath2010来打开,点print preview,结果都是无法打印出列表框的数值。并且我发现重要一点是,如果用IE打开的话,选择文件-打印是可以打印出数值的。

    甚是苦恼,请大侠帮我明断啊,万分感谢。


    chengli

    2012年4月21日 17:20

全部回复

  • Hi chengli,

    SharePoint Infopath 自带的打印按钮和IE->文件->打印,是不同的机制。我建议你先用jquery的打印机制看看。主要添加如下的代码。

     <script src="/_layouts/jquery.min.js" type="text/javascript"></script>
     <script src="/_layouts/jquery.PrintArea.js" type="text/javascript"></script>
     
     <script type="text/javascript">
     $(document).ready(function () {
         $("#print_button").click(function(){
             $("#WebPartWPQ2").printArea();
         });
     });
     </script>
     <input id="print_button" type="button" value="打 印"/>

    详细步骤你可以参考下面的链接。还有你的Infopath中的控件的样式和宽度是否合理,也有可能影响打印的效果。

    http://www.cnblogs.com/leolis/archive/2012/02/24/2366923.html

    Thanks,

    Jack

    2012年4月25日 15:31
    版主
  • hi, Jack ,谢谢指教。

    后来我又进一步的测试了下,发现也许是因为列表框的值需要被选中才能打印出来的。如果再第一个帖子图中列表框有两个值1和2,如果用infopath打开表单后,单击1,那么1就会被蓝色高亮显示,这样的情况下打印是可以打印出1来,但没有2。如果12都不选,则打印出来的列表框内是空的。

    这个是列表框的特性吗?而我现在需要的就是要再不选择任何值的情况下把列表框内的值全都能打印显示出来。

    谢谢大侠帮我分析下吧。


    chengli

    2012年4月25日 16:31
  • Hi chengli,

        我反复测试,我发现list box 是单选控件,所以在任何状态下,同时只有一个被选中。因此那个被选中(或者默认是第一项)被打印出来。其他的都不会被打印出来。所以我认为如果你想要所有的都打印出来,你可以选择Multiple—selection List box 控件。因为是多选,所以都会被打印出来。请看我的截图。

    如果你一定要用单选的list box,打印出你想要的效果的话,你可以有两种办法。

    1.就是你所说的通过IE去打印。

    2.在计算机的键盘上按下Print screen(印屏幕)键,然后粘贴到操作系统自带的画图程序里面,在画图程序里面打印出来。

    Thanks,

    Jack

     

    2012年4月26日 2:11
    版主
  • hi, jack ,谢谢你帮我做的测试。 现在我把列表框改成了多选列表框(从外部数据源获取选项),然后发布到moss,打开表单后效果如下图所示:

    也许因为多选列表框内的值是从外部获取的缘故,我无法去用鼠标选择某项使其高亮显示。

    然后我试着点了网页(不是IE-文件-打印预览,而是infopath网页上方的工具条)中的print prinview打印预览了下发现还是空的,见下图

    不过,后来我用infopath来打开这个表单,发现打印预览中是可以看到值得,就是每个选项左边的灰色小框框是否可以去除呢?这样就美观了,因为我的本意就只是显示出这几个值,而不是让员工去选择。

    希望有办法彻底解决这个问题,谢谢啦


    chengli




    • 已编辑 Louis_LI 2012年4月26日 3:37 补充
    2012年4月26日 3:24
  • hi chengli,

    经过我一天的测试,任然发现没有更好的解决方案。你说的小框框是无法去除的(据我所知),因为它是多选框的一部分。关于list box 只能打印 选中的一项或者默认第一项,却是Infopath的一个软肋。这是控件自身的限制。

    还有一个办法,就是你把你的内容可以读取到单行文本或者多行文本里面,单行文本和多行文本里面的内容在打印的时候是可以全部看到的。

    Thanks,

    Jack

    2012年4月26日 15:00
    版主
  • hi, Jack, 非常谢谢你的耐心测试。 不幸的是,在我这个case中,无论是单行文本还是多行文本都无法正确显示我需要的值。我想因为我抓取的是外部数据源(见下图),而几乎每次抓取到的都是多数据,所以文本框只能显示出第一个值,显示不出多值来。


    chengli

    2012年4月26日 15:30
  • Hi chengli,

    如果你抓取的是多笔数据,你就可以用重复表啊,然后再把重复表disable,这样用户就不能编辑了啊。只能看到数据了。我认为重复表在你的场景中应该是最适合的控件了。

    Thanks,

    Jack

    2012年4月27日 3:06
    版主
  • hi, Jack ,按您说的我又测试了下,发现还是不行,重复表也是只能抓取到第一个值。见下图,上方是多选列表框,下方是重复表。


    chengli

    2012年4月27日 4:22