other3.htm
23.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
<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'><script type='text/javascript' src='dynaload.js' /></pre>
当该js被修改后,浏览器不一定会马上刷新,<font color=red>它可能会从本地cache中读取</font>,所以它以为版本没变,就加载了本地的老版本。当然解决办法也非常简单:在src后加一个特定的文字戳即可,例如改成:<br>
<pre class='xml'><script type='text/javascript' src='dynaload.js<font color=red>?123</font>' /></pre>
这样这段js就肯定能刷新,以后只要js改动过,文字戳也必须更改。<br>
其实,不只是js,象常用的<a href='abc.htm'>超链接偶尔也会发生这种情况,其解决方法同上。这个问题本身和硕正套件是没有关系的,其实,有很多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> 您必须在 <Properties> 中定义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>
<DropList id="country"><br>
<item key="1">France</item><br>
<item key="2">Germany</item><br>
<item key="3">Brazil</item><br>
<item key="4">Belgium</item><br>
</DropList><br>
能否动态从数据库取?
</b></td></tr></table>
<font color=#666666>答复: </font> 可以,写成例如这样:<br>
<b><DropList id="country" dataURL="../service/getcountry.aspx" /></b><br>
这个aspx返回的数据格式比较自由,也可以和静态数据的一样。<br>
<br>
<table cols=2 border=0><tr><td><img src='why.bmp'></td><td><b>问12.我的计算表达式是这样写的,为什么结果不正确?<br>
<express> price=if(amount >= 1000, 2.3, 3.0) </express></b></td></tr></table>
<font color=#666666>答复: </font> 在元素 <name> ... </name> 之间的串中,大于、小于符号请务必将写成 <font face="consolas" color=red>&gt;</font>、 <font face="consolas" color=red>&lt;</font>, 或者用 <font face="consolas" color=red><![CData[ ]]></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> 将列设成右、下对齐即可。即<col Align="right" vAlign="bottom" ... >。<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>