c5d2629acab99f18f8ebae146469fea3baa2d839.svn-base 23.4 KB
<HTML>
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<link rel="stylesheet" href="../temp1.css" type="text/css">
</head>
<body bgcolor=#ffffff vlink=#0000ff>

<div id="Tag902"/><br><br>
  <font style='font-size:15pt'>3.安装、部署与运行</font><hr color=#2266ee size=1>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问1.在Win7 / Win8 / Win8.1下,我明明把报表另存到文件了,但是为什么在资源管理器中却找不到这个文件?</b></td></tr></table>
<font color=#666666>答复: </font><br>
<b>1.Vista / Win7 操作系统</b>: <br>
  是 IE 的“保护模式”起作用的结果,在“保护模式”下,IE8中看到的文件目录其实都是虚拟目录,你可能根本就找不到它们。<br>
  建议将访问的网站加入受信任网站,这样“保护模式”能自动关闭:<br>
<center><img src="act1.png"/></center>
  另外还有一种办法:降低 UAC (在控制面板-系统和安全-更改用户帐户控制设置) 的等级, 但降低后整机的安全会受影响。注:如果降低UAC,需要重启电脑才生效.<br>
<b>2.Win8 / Win8.1 操作系统</b>: <br>
  “保护模式”大致同上,但是操作系统的给浏览器和控件的权限比 Vista/Win7 更少,首先,您必须要把网站加入受信任站点; 其次,只能存取当前用户目录下的文件,比如存取“我的文档”中文件。<br>
  降低 UAC 等级这种方法似乎也不管用了,这一点和 Vista / Win7 不同.<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问2.客户端如何卸载Supcan套件?</b></td></tr></table>
<font color=#666666>答复: </font> 非常抱歉,客户端没有现成的卸载方法,不过按如下步骤,可以清除Supcan程序:<br>
<b>Step1</b>: 如果是 WIn7/Win8 系统,请删除 \用户\用户名\下的 BC 子目录(或 BC64、BC_Mozilla目录);<br>
<b>Step2</b>: 如果是XP/2003系统,请删除\Documents and Settings\用户名\下的 BC 子目录(或 BC64、BC_Mozilla目录),个别安全设置比较严格的机器,BC目录有可能在D:\BC;<br>
<b>Step3</b>: 如果是使用FireFox浏览器的,在FireFox菜单“工具 \ 附加组件”中找到硕正插件,将其卸载;如果是Chrome浏览器,则应在“工具\扩展程序”中去删除它;<br>
<b>Step4</b>: 如果是使用IE浏览器,找到Windows\Downloaded Program Files子目录,展开,删除“Supcan2 Control”程序;<br>
  至此,应该是清除干净了。<br>
备注:硕正套件决不写注册表(Regedit)、也不往诸如System32等目录拷贝任何文件。<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问3.客户端能保持多版本共存吗?</b></td></tr></table>
<font color=#666666>答复: </font> 在浏览器进程(Process)中不能同时加载多个版本,否则会报错。<br>
  多个版本的程序文件是能够共存的,程序文件都在\Documents and Settings\用户名\BC\下各自的版本子目录中,页面加载哪个版本完全取决于dynaload.js中的版本号。<br>
  为了避免版本升级后无用老版本的积聚,Supcan采用如下策略:每次浏览器进程首次加载控件时都将自动检查配置文件,如果新版本程序访问过的URL覆盖了老版本访问过的URL,才会自动删除老版本程序.<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问4.我在服务器中升级了Supcan的新版本包,为什么有的电脑能自动升级、而有的电脑老是报错要求关闭浏览器重新启动? </b>
</td></tr></table>
<font color=#666666>答复: </font> 它同时加载了2个不同的版本,所以会报错. 导致这个问题的可能原因如下:<br>
1.浏览器加载过老版本,在没有关闭过浏览器的情况下又加载了新版本。所以我们建议在深夜、尤其是在周末的深夜升级服务器;<br>
2.页面未能及时更新dynaload.js所致,象页面中类似如下的脚本:<br>
<pre class='xml'>&lt;script type='text/javascript' src='dynaload.js' /&gt;</pre>
  当该js被修改后,浏览器不一定会马上刷新,<font color=red>它可能会从本地cache中读取</font>,所以它以为版本没变,就加载了本地的老版本。当然解决办法也非常简单:在src后加一个特定的文字戳即可,例如改成:<br>
<pre class='xml'>&lt;script type='text/javascript' src='dynaload.js<font color=red>?123</font>' /&gt;</pre>
  这样这段js就肯定能刷新,以后只要js改动过,文字戳也必须更改。<br>
  其实,不只是js,象常用的&lt;a href='abc.htm'&gt;超链接偶尔也会发生这种情况,其解决方法同上。这个问题本身和硕正套件是没有关系的,其实,有很多Web开发者在平时开发时都碰到过js未及时刷新的现象。<br>
  本demo演示页基本上都采用了这种书写格式,避免了静态文件未能及时刷新现象。<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问5.我给我的用户升级后,为什么有的电脑会出现如下错误:</b><br><center><img src='err1.jpg'/></center></td></tr></table>
<font color=#666666>答复: </font> 原因和上一个问题完全一样。<br>
  如果在重启浏览器后仍然出现,那么恐怕需要手动去删除 "\Documents and Settings\用户名\BC" 目录了(windows7下是 "用户\用户名\BC" 目录)。<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问6.在版本升级时,有几台电脑死活升不上去,手工删除BC目录了还不行,怎么办?</b></td></tr></table>
<font color=#666666>答复: </font> 很有可能是缓存在作怪,缓存包括服务器端缓存、浏览器缓存。<br>
重启Web服务、清理浏览器的Cache,一般就能解决。<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问7.我们每次版本升级都很费劲,硕正套件升级难道都这样的吗? 有没有什么彻底的解决办法?</b></td></tr></table>
<font color=#666666>答复: </font> 不会,只要你理解“问4”、“问6”,并严格按照要求做了,基本应该是很顺利的。可以归纳为如下3点,希望您严格执行:<br>
<b>1.在夜间升级</b><br>
原因:保证用户下次打开IE,IE进程是干净的,不会出现一个进程同时加载2个版本的情况。<br>
<b>2.象“dynaload.js?123”这个数字,每次版本升级都应该变化</b><br>
原因:保证IE能下载这个文件,而不是从IE Cache 中读取。<br>
<b>3.升级后,后端服务建议重启</b><br>
原因:Web服务器也有Cache,重启服务以清空这个Cache。<br>
<br>
有一种情况,我们恐怕没有好办法:某些用户不喜欢关机(比如喜欢用睡眠)、IE进程又不关闭。<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问9.我在自己的电脑上搭了个应用,用IE没问题,用FireFox时插件下载不了,提示Http 404 文件未找到的错误</b></td></tr></table>
<font color=#666666>答复: </font> 请按照“开发者指南”上的使用说明为你的服务器增加一个MIME。<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问10.我的应用复用了dynaload.js,发现在FireFox下首次下载插件时和硕正提供的安装包中的demo页不一样,会出现如下不友好的对话框</b></td></tr></table>
<center><img src='pluginu.jpg' /></center>
<font color=#666666>答复: </font> 请参考安装包中的首页(index.htm),修改您的首页面,增加如下js:<br>
<pre class='cpp'>
function go(url)
{
 var agent = navigator.userAgent.toLowerCase();
 if(agent.indexOf("msie")>0)  {
  location.href=url + '?81';
  return;
 }
 if(navigator.mimeTypes["application/supcan-plugin"]) {
  location.href=url + '?81';
  return;
 }
 if(agent.indexOf("chrome")>0)
  window.open("install_chrome.htm");
 else
  window.open("binary/supcan.xpi");
}</pre>
  将href指向'javascript:go(".....")',这样就不会出现这个对话框了.<br>
  注意,这个"binary/supcan.xpi"是相对URL。<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问11.使用Supcan套件过程中,发现\Documents and Settings\用户名\BC\Temp 目录下临时文件会越积越多,这正常吗?</b></td></tr></table>
<font color=#666666>答复: </font> 不必理会,Supcan自有一套垃圾清理机制.<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问12.我单位是不允许连外网的,我发现首次安装硕正套件速度很慢甚至安装不成功,是不是需要连外网的原因?</b></td></tr></table>
<font color=#666666>答复: </font> 是的,因为 IE 会在线检查加载项的数字签名证书是否以被加入了黑名单。<br>
  如果您希望跳过在线检查,只能手工打开IE浏览器菜单“工具”下的“Internet选项”,切换到“高级”选项卡,在“安全”树杈中,把 “检查发行商的证书是否吊销” 勾选除去。<br>
<br>


<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问13.发现电脑安装不上硕正套件,是什么原因?</b></td></tr></table>
<font color=#666666>答复: </font>如果是首次安装, 请检查:<br>
1.请把IE浏览器的安全等级设成默认的,大部分问题都能解决;<br>
2.检查是否能连外网,如果不能连外网,请看上面的“问13”;<br>
3.如果是Win7, 请看上面的“问1”,尽管看似不是同一个问题,但本质是一样的;<br>
4.如果还不行,请直接访问硕正官网上的在线演示,如果在线演示没问题,那说明是你后端部署有问题,比如少部署了文件、或URL写得有问题;<br>
5.如果大部分电脑没问题,有个别电脑死活装不上,这种情况也确实存在。我们发现,确实有大约 2% 左右的电脑无法自动安装,原因不明,主要是XP系统,遇到这种情况,请联系硕正客服,申请要一个本地安装包的制作工具,借助该工具,肯定能安装成功。<br>
  如果不是首次安装,而是升级不成功,其原因请参考上述的“问7”,只要你后端部署肯定没问题,一般手工删除BC目录、清理IE的Cache后,肯定能成功。<br>
<br>



<div id="Tag904"/><br><br>
  <font style='font-size:15pt'>4.Treelist组件</font><hr color=#2266ee size=1>
<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问1.demo页中,有的数据用XML格式、有的用JSON、有的是TXT,有规定吗?</b></td></tr></table>
<font color=#666666>答复: </font>  没规定。<br>
  硕正套件是自适应的,即能够自动识别数据的格式。<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问2.我明明删除了1行数据,调用GetChangedXML()却返回空串(即内容未被修改过),这是为什么?</b></td></tr></table>
<font color=#666666>答复: </font>  您必须在 &lt;Properties&gt; 中定义Key属性,指定主键。<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问3.Treelist的XML规范有点复杂,我需要去啃它吗?</b></td></tr></table>
<font color=#666666>答复: </font> 是的,这是必需的,因为Treelist目前还没有象Supcan Report那样的所见所得设计工具。该XML规范其实也并不复杂,您可以随时查阅帮助文档,常用的元素不会超过20个。<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问4.某列采用了下拉Treelist,下拉选择后,如何取得选中内容、和下拉Treelist中选中行各列的内容?</b></td></tr></table>
<font color=#666666>答复: </font> 如果仅仅是取单元格的显示内容,调用GetCellText( )函数就行,该函数取得的是显示内容,而非数据。<br>
  如果需要取下拉当前行其它列的内容,那么首先调用GetHandle( )函数取得下拉Treelist的句柄,然后调用扩展函数的GetCurrentRow( )取得下拉Treelist的当前行,最后调用扩展函数GetCellData()即可。<br>
  请参见演示页 “28.下拉的其它功能” 中的演示。<br>
<br>
<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问5.我采用Freeform、Treelist分别作为表单的表头、表体,但打印时只能打出表体部分,如何才能按照我自己的格式打印完整的表单呢?</b></td></tr></table>
<font color=#666666>答复: </font> 使用Report组件,并且应预先准备好一张使用了临时数据源的报表。 <br>
  关于数据的传递,可以先通过GetChangedXML( )取得XML串,然后通过Report的SetSource( )函数,将这XML大串传入。<br>
<br>
<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问6.调用GetChangedXML( "level=0" )取得XML串,发现如果内容未改则返回空串,有没有简单的方法取得完整串而不管内容是否有改动?</b></td></tr></table>
<font color=#666666>答复: </font> GetChangedXML( "level=0; isIgnoreChange=true" )。<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问7.XML模板或API中,有很多处的URL(例如 dataURL)属性,如果采用相对URL,到底相对谁?</b></td></tr></table>
<font color=#666666>答复: </font> 遵循这2个规则: <b>1</b>.谁定义,就相对谁;  <b>2</b>.斜杠("/")开头表示相对根目录。<br>
<br>
<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问8.Treelist的表达式、函数、宏不能完全解决我的客户端逻辑,怎么办?</b></td></tr></table>
<font color=#666666>答复: </font> 注意到函数js()了吗?它能反向调用当前页面的js,你可以把复杂的客户端逻辑写到页面Js中。<br>
<br>
<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问9.在Windows7下,为什么有的Treelist的输入处光标不会闪烁?</b></td></tr></table>
<font color=#666666>答复: </font> 是因为行高不够,适当调高即可。<br>
<br>
<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问9.设为主键(Key)的字段,如果我没输入或输入重复,用GetChangedXML函数提交时会提示错误。怎样才能不提示? 因为我的主键是后端生成的,客户端根本不需要校验</b></td></tr></table>
<font color=#666666>答复: </font> 请参考GetChangedXML( )函数中的 isValidateKey 参数。<br>
<br>
<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问10.可编辑的下拉的列,我能任意输入吗(即内容不在下拉列表中的)?</b></td></tr></table>
<font color=#666666>答复: </font> 可以,需要定义 freeInputAble="true"。<br>
<br>
<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问11.最简单的下拉(Droplist),我看到例子中的数据都是静态的:<br>
   &lt;DropList id="country"&gt;<br>
    &lt;item key="1"&gt;France&lt;/item&gt;<br>
    &lt;item key="2"&gt;Germany&lt;/item&gt;<br>
    &lt;item key="3"&gt;Brazil&lt;/item&gt;<br>
    &lt;item key="4"&gt;Belgium&lt;/item&gt;<br>
   &lt;/DropList&gt;<br>
能否动态从数据库取?
</b></td></tr></table>
<font color=#666666>答复: </font> 可以,写成例如这样:<br>
    <b>&lt;DropList  id="country"  dataURL="../service/getcountry.aspx" /&gt;</b><br>
  这个aspx返回的数据格式比较自由,也可以和静态数据的一样。<br>
<br>
<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问12.我的计算表达式是这样写的,为什么结果不正确?<br>
    &lt;express&gt; price=if(amount &gt;= 1000, 2.3, 3.0) &lt;/express&gt;</b></td></tr></table>
<font color=#666666>答复: </font> 在元素 &lt;name&gt; ... &lt;/name&gt; 之间的串中,大于、小于符号请务必将写成 <font face="consolas" color=red>&amp;gt;</font>、 <font face="consolas" color=red>&amp;lt;</font>, 或者用 <font face="consolas" color=red>&lt;![CData[  ]]&gt;</font>包绕。<br>

<br>
<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问13.Treelist中某一列是图片,发现图片是平铺显示,怎样让它自动缩放全部显示?</b></td></tr></table>
<font color=#666666>答复: </font> 将列设成右、下对齐即可。即&lt;col Align="right" vAlign="bottom" ... &gt;。<br>
<br>

<br>
<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问14. 怎样导出分页显示中的全部数据?</b></td></tr></table>
<font color=#666666>答复: </font> 有如下2种方案: <br>
1.常规方案<br>
  执行 EnableMenu 函数,注意函数文档中的“exportAll”参数,使得右键菜单中能弹出“转换输出全部页”;<br>
  该菜单项会触发 RequestAllPages 事件,请在该事件中加载全部数据即可。<br>
2.外部菜单方案<br>
  在外部菜单中通过调用Treelist的函数实现,调用的函数无非就是 Load、OpenExportDialog.<br>
  为了不影响原Treelist的显示,您也可以在页面的可视区域安置一个2px X 2px的Treelist,用这个Treelist来加载数据、转换输出。<br>
  如果数据行数很多,为了及时释放客户端内存,可以在导出后将数据行删除,或执行一遍Build也能起到清理内存的作用。<br>
<br>



<br>
<div id="Tag905"/><br><br>
  <font style='font-size:15pt'>5.Report组件</font><hr color=#2266ee size=1>
<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问1.如何学习和数据源相关的报表开发?</b></td></tr></table>
<font color=#666666>答复: </font> 1.请参考“开发者指南”中“Supcan Report组件”的“附录:数据源实例”,完全按照其步骤实战一遍;<br>
2.如果您是asp.net开发者,请参考我们主页上“后端开发案例”中的第一个案例,完成数据源的数据提供服务编程,将其结合到上例的实战中;<br>
3.如果您是JavaEE开发者,请参考我们主页上“后端开发案例”中的第二个案例,完成数据源的数据提供服务编程,将其结合到上例的实战中;<br>
4.仔细学习Report的各个在线演示页,请关注其“技术分析区”,它包含了很多很重要的帮助、技巧;<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问2.点了工具条上的“保存”按钮,报表怎么没保存到服务器端啊?</b></td></tr></table>
<font color=#666666>答复: </font> Report本身并不具备上传文件的能力,该“保存”功能必须要和页面js、服务器端程序结合才能生效。具体做法如下:<br>
<b>方案一:</b><br>
在页面中增加一个“上传”的按钮,在按钮的onClick事件中调用GetFileXML( )函数,以取得当前报表的XML串,然后通过Ajax POST到服务器;<br>
<b>方案二:</b><br>
直接使用工具条上的“保存”按钮,但需要在OnEvent()事件中处理“Saved”事件:执行GetFileXML( )函数,取得当前报表的XML串,然后通过Ajax POST到服务器.<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问3.报表的工具条、编辑设计功能都很丰富,这到底是为开发设计人员用还是为最终用户使用?</b></td></tr></table>
<font color=#666666>答复: </font> Demo页只是全方位展示Report丰富的功能,最终部署到应用程序时,可以根据需要裁剪掉一些功能。<br>
  最简单的功能裁剪方法就是重新定义创建参数,屏蔽掉一些工具条或工具条上的按钮,具体可参考demo中的“几种展现方式”。<br>
  如果不怕麻烦的话,可完全抛弃Report自带的工具条:采用自定义工具条,具体可参考Report开发指南及相关demo页。<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问4.Treelist、Freeform都有XML文档规范可参考,为什么Report的XML文档规范没有公布?</b></td></tr></table>
<font color=#666666>答复: </font> 因为Report本身就是一个设计器,你设计好后“另存”到本地文件即可。此外,Report的XML格式远比Treelist、Freeform复杂,手写XML很难设计出复杂的报表。<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问5.采用Supcan Report设计好报表后,如何保证让最终用户既能编辑格式、但又不改坏已定义好的临时数据源?</b></td></tr></table>
<font color=#666666>答复: </font> 建议您采用包含如下功能的方案:<br>
1.为每种报表设计一张原始的“模板”报表,内含完整的数据源定义,报表外观编排可以不完全按照用户的需求,粗糙一点也没关系;<br>
2.提供自定义报表功能,用户新建的报表只能从“模板”复制,而不能让其直接修改“模板”;<br>
3.需要为用户实现报表的保存功能,保存到服务器,下次默认打开的是用户自己新建的报表;<br>
  这样就能很好地实现不同的登录用户打开不同外观的报表、一个用户拥有多张报表的功能----其实都是从同一张模板中复制的。<br>
  中心数据源不存在这样的问题。<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问6.如何实现报表仅用于被查询而不被修改?或报表中部分内容不被修改?</b></td></tr></table>
<font color=#666666>答复: </font> 请调用Swkrntpomzqa( )函数。如果要让某些内容不被修改,请结合“保护”属性、和Swkrntpomzqa()函数。<br>
  也可以参考开发文档中的其它权限类函数,比如addEditAbleOnly( )、addUnEditAbleOnly( )函数,功能比较强大。<br>
<br><br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问7.我设计好报表、填入数据源的数据,然后将报表另存,当我再次打开这个报表(XML文件)后,发现填入的数据不见了,这是怎么会事?</b></td></tr></table>
<font color=#666666>答复: </font> 在默认情况下,报表永远是以“模板”的形式保存的,模板是不包含从数据源中取到的数据的,也就是说在保存时,临时剔除了填入的数据。当报表再一次在页面中展示时,需要在OnReady( )事件中书写代码以取数、填充、展现。您明白这个机理了吗?<br>
  如果您非要连同数据一起保存,那么可以在工具条菜单 数据源管理 - 高级 中将选项“数据源填充的数据连同报表一起保存”勾上即可。<br>
<br>


<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问8.我更改了打印的设置(如页边界、分页参数),如何保持住这些参数?</b></td></tr></table>
<font color=#666666>答复: </font> 打印的所有参数,都是保存在XML模板文件中的。你修改了打印设置,需要保存一下模板(或上传到服务器).<br>
<br>


<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问9.我在学习带参数的数据源,是不是URL中的变量如 "test.aspx?y=2011&mon=23&dept=A1" 都必须当作参数?</b></td></tr></table>
<font color=#666666>答复: </font> 不是的,报表中的“参数”是指内容取自单元格的参数,像固定的、或由js控制的变量就不能算是“参数”.<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问10.中心数据源或临时数据源,有很多处的URL(例如 dataURL)属性,如果采用相对URL,到底相对谁?</b></td></tr></table>
<font color=#666666>答复: </font> 遵循这2个规则: <b>1</b>.谁定义,就相对谁;  <b>2</b>.斜杠("/")开头表示相对根目录。<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问11.如何实现同类单证的连续打印?</b></td></tr></table>
<font color=#666666>答复: </font> 在js中编写一段循环,反复调用SetSource( )、Calc( )、Print( )函数就行.<br>
  须注意第一遍循环中Print( )的参数应该是1,其余的应该为0,这样打印对话框就只弹出一次。<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问12.电子表单通常分二部分:表头(master)和表体(detail),硕正Report能实现吗?</b></td></tr></table>
<font color=#666666>答复: </font> 请参考demo页“报表 - 精确打印 - 套打(一)”,这应该就是您所要的。 或者,也可以参考下Freeform的demo页“10.有表头表体的表单(2)”<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问13.我们的数据服务都设计成 rest 方式调用的WebService,请问应该怎样和硕正的数据源配套使用?</b></td></tr></table>
<font color=#666666>答复: </font> 选择普通的XML数据源(包括临时数据源或中心数据源)就行,而不是硕正Web Service数据源,因为硕正WebService数据源仅用于POST的、非rest方式的.<br>
  此外,你后端需要配置为: 1.请求方式必须是Get; 2.MediaType.TEXT_PLAIN.<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问14.怎样控制按数据类型输入,比如数值型只能输入数字、日期型只能输入日期?</b></td></tr></table>
<font color=#666666>答复: </font> 打开工具条左侧的“属性”对话框,选中“启用单元格的数据类型校验(在输入时)”:
<center><img src='report4.png'></center>
  但是请注意,该选项在设计时(DesignTime)是不起作用的.<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问15.我用 NotePad 打开一张使用了中心数据源的报表XML文件,发现其中有中心数据源的列结构的详细信息(即所谓“数据源模版”),这些列结构有什么用呢?</b></td></tr></table>
<font color=#666666>答复: </font> 在大多数情况下,这些列结构信息确实没啥用处,因为报表在展现时,列结构将强行和后端的中心数据源同步. 但是如果你修改了列的显示名(标题)、列的显示顺序、是否隐藏等等,那么这些信息就有用了。<br>
  当然如果使用的是临时数据源,那么列结构信息是绝对有用的。<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问16.我不想在页面中出现报表控件,只是想调用CallFunc函数直接打印,所以我把 div 的高、宽设为1px,为什么经常会不稳定,似乎控件没有创建?</b></td></tr></table>
<font color=#666666>答复: </font> 你把高、宽各设成 2px 就很稳定了,估计和浏览器对div的渲染有关.<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问17.继续上一个问题,我把 div 的高、宽设为2px,但还是有个白色(或黑色)的小点,能去掉它吗?</b></td></tr></table>
<font color=#666666>答复: </font> 在它的 OnReady 事件中,将它的div容器隐藏即可。隐藏div 可设置 visibility 为 hidden,  不建议用display="none" 。<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问18. SetSource( ) 函数到底应该在 Build( ) 函数前执行还是后执行?</b></td></tr></table>
<font color=#666666>答复: </font> 如果是临时数据源,必须先执行Build( ),再执行 SetSource( ); 如果是中心数据源,则没有这个要求,一般建议先执行 SetSource( ),因为它是全局有效的, 对今后的新增报表都能生效.<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问19. 报表中使用了超链接,有时候是直接打开了链接页面,有时候没反应,这有什么规律吗?</b></td></tr></table>
<font color=#666666>答复: </font> 如果你预订(SubscribeEvent) 了Clicked事件,那么只抛出Clicked事件,不会打开超链接页面的;否则则相反,只打开链接页面、不抛出事件.<br>
<br>


<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问20. 我想在页面 js 脚本中直接调用数据源中的数据,可以吗?</b></td></tr></table>
<font color=#666666>答复: </font> 可以,请参考“全局函数”文档中的“6.对 计算函数 的封装”。但你只能调用 data、head这些单个数据,无法调用 datarow、headrow这些块状的数据.<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问21. 我想对报表中数据源填充区域做一个合计,例如在 =datarow( )函数的下一行写 =sum(D4:D20),但无法预计数据有多少行,不知道D20这样写对不对?</b></td></tr></table>
<font color=#666666>答复: </font> 报表在线演示中有很多这方面的演示页的,例如:<br>
<center><img src='report9.png'></center>
  关键就是需要“@单元名”宏,详细请参考"公共内容"中的"3.宏".<br>
<br>

<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问22. 报表中的单元格怎样让它使用下拉?</b></td></tr></table>
<font color=#666666>答复: </font> 首先,您必须在报表中先设定“字典”,字典功能在“工具箱”上方第四个小按钮中;<br>
  “新建”字典,字典中有2列:key 和 text,这里看似需要逐条输入,其实也可以直接从数据源加载的(在对话框右上方的“数据源”按钮);<br>
  建好字典后,设置单元格的选项,在工具箱、单元格选项的 " 下拉框选择录入"选项卡中.<br>
<br>
<br>


<br>
<div id="Tag906"/><br><br>
  <font style='font-size:15pt'>6.服务器专版</font><hr color=#2266ee size=1>
<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问1.我配置好了服务器专版,用花生壳作为临时域名测试,发现本机访问服务没问题,但从外网访问域名就是不成功,会是什么原因?</b></td></tr></table>
<font color=#666666>答复: </font>我们发现过几起,都是和Windows防火墙有关, 你应该在防火墙的“高级设置”中分别增加一个入站规则和出站规则,开放80端口.<br>
<br>
<br>

<br><br><br>
<script type='text/javascript' src='nstd.js'></script>
</body></html>