ADP应用开发常见问题解答.docx

上传人:sk****8 文档编号:3149550 上传时间:2019-05-23 格式:DOCX 页数:10 大小:298.25KB
下载 相关 举报
ADP应用开发常见问题解答.docx_第1页
第1页 / 共10页
ADP应用开发常见问题解答.docx_第2页
第2页 / 共10页
ADP应用开发常见问题解答.docx_第3页
第3页 / 共10页
ADP应用开发常见问题解答.docx_第4页
第4页 / 共10页
ADP应用开发常见问题解答.docx_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、ADP 应用开发常见问题解答1, 在一张制单卡片界面上控件绑定字段设置数据列权限,如果针对当前用户没有查看该列的数据权限的时候,此处显示为空白,导制整个制单界面布局混乱,请问如何解决?Re: 将卡片维护信息包含的控件放置在一个 TabLayout 容器控件中,第个控件占据一个单元格,并设置控件的 Dock 属性为 Fill,同时设置 TabLayout 容器控件的“自动重新布局”属性。表单引擎在解析的时候,会自动将可见的界面控件进行了重新布局。2, 在表单列表上选择显示合计功能后,合计出来的金额和数量,都是 8 位小数,没有找到哪里能设置该合计行的小数点位数Re: 列表控件列金额和数量的设置实

2、现是设置该列内嵌的数字控件的精度,对于合计列,是 Grid 控件自已的属性,在 ADP 表单列表控件上,列中某列后,设置合计列的显示格式如:0:n2, 0: 表示计算出来的数字,n2 表示格式化掩码。 数字类型掩码输入格式: 预定义掩码:(下列预定义的掩码受当前区域 (Culture)的影响)C or c: Currency 货币 如: “¥ 123,456,789.12“D or d: Decimal 录入整数 如“123456789“ “-12“ F or f, G or g: Fixed-Point 定长小数 如“123456789.12“ “12.35“N or n: Number 录

3、入数字的整数部分会插入千位符 如“123,456,789.12“ “-12.35“P: Percent 百分数 如录入的是 “15%“,则编辑器的值是 15p: Percent 百分数 如录入的是“15%“,则编辑器的值是 0.15c0: 货币整数 如“¥123,456,789“ “¥-12“f0: Fixed-point(integer) 如“123456789“ “-12“ n0: Number(integer) 带千位符的整数 如“123,456,789“ “-12“c2: 货币( 两位小数 ) 如“ ¥123,456,789.12“ “¥-12.35“f2: Fixed-point(2

4、 decimal places) 如“123456789.12“ “-12.35“n2: Number(2 decimal places) 带千位符 如: “123,456,789.12“ “-12.35“c3: 货币( 三位小数 ) 如“ ¥123,456,789.123“ “¥-12.345“f3: Fixed-point(3 decimal places) 如“123456789.123“ “-12.356“n3: Number(3 decimal places) 带千位符 如: “123,456,789.123“ “-12.356“3, ADP 表单上 ComboBox、CheckCo

5、mboBox 、ImageComboBox 控件绑定的字段在数据库中类型为非字符型时报错的处理方案?Re: CombBox、CheckComboBox、ImageComboBox 控件在表单引擎解析时,默认绑定给它的数据源(DataTable) Value 字段是字符型,如果在数据库中的字段设计为数字型,请在数据模型定义的时候将该字段的类型转换为字符。4, 在 ADP 表单设计过程中,输入控件对齐了(其中包含二字、三字、四字的标签) ,运行起来后对不齐,如何解决?Re: ADP 设计器中包含的输入类控件是平台封装后的 UseCotnrol,包含了 Label 标签和实际的输入控件,在设计器上设

6、置的宽度实际是整个 UserControl 的宽度,在 GSP5.2后的版本增加针对标签的宽度设置及标签文本齐属性,如下图: 5, 数字类型的输入控件,新增数据时默认为 0,如果设置数据为 0 的数字控件显示为空?Re: 在 GSP5.2 版本增加了”零值是否显示 ”的属性,将该属性设为 False,当数据为 0 时,界面显示为空,如下图:6, 我在 Tab 页中放入 Iframe 控件嵌入子表单, 在框架内运行时加载时子表单的工具栏不能自动展示。双击”GS 系统工具条后“,子表单工具栏显示Re: 在放 IFrameElement 的 Tab 页先放一个 Panel 容器,再将 IFrameE

7、lement 嵌在Panel 容器内.7, 列表在切换视图方案时,除方案中定义的过滤条件外,我想通过扩展构件的方式,再追加一些求数的条件,请问在扩展构件中如何能获取到当前方案上定义的过滤条件?Re: 在扩展构件中 this.UI.CurrentStyleSolution 即当前选中的方案,通过这个对象,即可获取到在方案上定义的过滤条件,代码示例如下:/获取方案常用条件String commonConditionString = CurrentStyleSolution.CommonCondition.ConditionString;/获取方案高级条件String otherConditionS

8、tring = CurrentStyleSolution.OtherCondition.ConditionString;/获取方案排序条件string orderString = CurrentStyleSolution.Sort.SortString;/此处可扩展自己追加的过滤条件,然后将取数条件进行溶合后获取数据,代码如下:string filterStr = ExpressParser.Merge(CurrentStyleSolution.CommonCondition.ConditionString,CurrentStyleSolution.OtherCondition.Conditi

9、onString);GSPFilter filter = new GSPFilter(filterStr, orderStr);this.Form.Model.DefaultInstance.LoadData(new DataURI(filter);8, 一个计算框上设置掩码 Percent(mode 2),在该计算框失去焦点后,输入的数据就不显示了,如输入 10.00%,失去焦点后,计算框中显示的值为 0.00%,获取焦点后又变成了 10.00%Re: 表单上控件属性设置不正确,设置控件对应的掩码 P2 和精度 2,不要均定义为 09, 平铺式分组面板 NavBarControl 控件,如何

10、设置让其中的某个 NavBarGroup 根据界面空间大小自适应,类似 Dock 的属性 ?Re: 平铺面板整个是个大的容器,里面可嵌多个分组的面板,Dock 属性是针对整个大的容器,比较讨厌的是 NavBarGroup 不支持 Dock 属性,如果需要让某个 NavBarGroup 自适应,将设置“面板自动高度”属性为 True,请注意,在一个 NavBarControl 里面只能设置其中的某一个 Group 自动高度属性为 true,这块是在表单引擎中通过计算来实现的。10, 在列表中前面加一个 checkbox 复选框的目的是为了选中一行,在退出时不需要提示保存,但是目前总是提示保存,是

11、否可以加一个设置,不需要保存的退出时就不再提示Re: 调用的构件方法不对,请调用查询索引界面控制器中设置界面只读属性方法为False,如果通过扩展构件的方式实现,代码如下: this.UI.ReadOnly = False; 11, CheckBox 控件是否可绑定除 0:false ,1:true 之外的值,如 1: true, -1: false?Re: 对于 CheckBox 控件绑定的 Bool 型,是由数据访问引擎在取数时自动按固定的规则 0:false,1:true 来处理的,固定的规则,无法调整,否则,你是 1、-1, 其它人是 2 或 3, 引擎就不知道如何转换啦12,一个 A

12、DP 窗体上打开另一个窗体,在扩展构件中如何传递对象集合?Re: 在 GSP5.2 版本后,在表单上增加了传递对象的属性参数,在扩展构件中的调用方法如下:FormURI formURI = new FormURI(formDefID, initialActionID, argumentString);/支持对象集合参数传递 Dictionary DictVariableformURI. DictVariabler = XXXX(要传递的对象) /new 新表单XForm form = new XForm(formURI);13, 系统希望在有些地方增加自定义超链,比如表头有个物料编号,可以定义

13、点击label时联查到物料字典,并且将input区的物料编号带入功能,实现联查Re: 将控件的标签设置为空,同时在控件前插入超链控件,在控件的单击事件挂打开新窗体方法14,网报输入法问题,部分电脑文字框无法输入汉字Re: 客户端机器必须安装FrameWork2.0sp115, 列表卡片模板类型的表单如何定义列表的过滤条件和排序条件Re: 对于列表卡片在同一界面的表单模板,后台实际有两份实体数据,但表单视图默认的是卡片,要修改列表过滤条件时,将视图换回“列表”,修改完成后,再换回“卡片”(注意:修改表单文档时切记将卡片对应的实体数据设置为默认实体源)16,每次加载完实体数据,对界面展现数据进行客

14、户端编辑后(数据提交前),如何获取原始数据DataSet获取方式(目前存的是_initialInstanceDocXml,且外部无法调用)Re: 在GSP5.2版本,在实体元素(InstanceElement)上增加了属性(InitialInstanceDoc),属性值类型为InstanceDataDocument,通过该属性可获取初始数据对应的数据集(DataSet)或初始数据文档(InstanceDataDocument.DataDocument.OutXml).17, 一个表单列表加载数据量过大时(成千上万条数据),如何解决客户端打开效率及不时出现内存溢出的问题?Re: 一般情况下,对于

15、列表上的大数据量展现时,我们要求数据按分页的形式来展现,如若确实不能通过分页来实现的情况下(如大凭证),在GSP2012-02-28号后提供的补丁里面提供了表单加速处理的模式(请慎用),设置方式如下:修改一下 ADP 表单设计器文档,在实体节点上增加 “表单加速 ”属性FormSpeedUp=“True“(看我红色标注的) ,注:必须动动表单上的控件或改改表单的备注属性,让表单的小星号出来,此时再切换到表单代码 Tab 页,直接在上面修改表单文档,这样修改后的文档点保存才能设置上属性。如下图18,在扩展构中,构件中取不到 TabControl 控件或 TabPage 控件的 ID,只能取到其

16、Text 信息?Re: TabControl、 TabPage 控件对应的属性是 Name,通过 Name 属性来获取.19, 在 GridControl 表格控件是如何增加删除上一页、下一页这些按钮,并可以在表单上配置其调用的事件?Re: 在 GSP5.2 版本后增加了在表格增加按纽并调用配置构件方法的实现,如下图:选择“显示内置导航” 为 True在导航按纽集合中定义内置的按纽及 OnClick 事件绑定的方法,如下图20, 一主多从时如何控制某个子对象是否必填? 场景如下: 网上报销中的报销单据是一主多从的单据。当存在多个明细区时,客户希望能够通过在表单定制时设置某个明细区为必填以控制填

17、报人员必须填写明细记录的目的。比如出差报销单中的出差明细记录,客户为了控制填报人员在出差时的出发地和到达地信息,在单据定制时启用了网上报销预留的明细1子对象,希望填报人在填写报销单时必须填写这些信息Re: 在GSP5.2版本数据模型子对象上增加了数据提交时,子对象数据是否允许为空的设置,如下图:21, 带分组的智能帮助,对分组部分的过滤条件如何设置?Re: 在GSP5.2版本,对于分组帮助,提供了针对分组源的过滤条件设置,如下图:22, 目前平台配置的必输项目没有录入时可以显示红色叉号,在扩展构件中进行业务规则验证不通过时,如何实现设置上红色叉号?Re: 红色叉号用到的是 DataRow 本身

18、带的方法,若要使用,请参照如下代码/以编号验证列为例,设置红叉DataRow row = this.DefaultInstanceData.DataSet.Tables0.Rows0;string dictCode = Convert.ToString(row“DictCode“);if (string.IsNullOrEmpty(dictCode)row.SetColumnError(“DictCode“, “编号不允许为空! “);return;/如果验证通过了,则直接清除掉所有的叉叉if (row.GetColumnsInError().Length 0 23, 在扩展代码中,如何强制让

19、状态机同步到指定状态?Re: 示例代码如下:String stateID = XXX; (强制迁移的状态 ID)if (this.Model.StateMachine.IsRunning)this.Model.StateMachine.CurrentStateID = stateID;elsethis.Model.StateMachine.Start(stateID);24,扩展构件代码中,循环对列表控件列 GridColumn 控件布局等属性进行设置操作时,在列比较多(大于 30 列)时,效率非常低?Re: 研究发现,在对列进行操作前,设置GridControl. SuspendLayout

20、()方式或者不挂起布局都会导制效率低下,正确的使用方法如下:GridControl.BeginInit();/XXXXXXXXX 对表格列进行了处理GridControl.EndInit();25, 主从结构的单据,在表体上选择多值帮助后,在扩展构件中根据选择的值,循环调用新增行(InsertDetailAtLast),然后赋值处理时,效率非常低(子表字段列较多,并且定义的表达式很多)?Re: 子表在新增行后,每次都会触发表达式的计算,在此场景中,表达式的循环将数据加载到有向图进行计算的过程,花费了大量的时间,为了避免在新增行的过程中触发表达式计算,可执行如下代码:this.Model.Sus

21、pendModelProcess();XXXXXX (此处是你自己的代码处理,比如新增行,给新增的行赋值等,处理完后,再将模型处理恢复this.Model.ResumeModelProcess(false);26, 对方城市依赖于对方省,设置了依赖表达式,帮助后,给对方省与对方程序赋值后,点保存,对方城市的值给清空了,去掉依赖表达式就正常?Re: 在 ADP 表单设计器,我们一般给某个帮助控件设置过滤条件中引用了模型上的其它字段的值作为过滤条件的一部分时,系统会在此帮助控件上自动生成一个依赖表达式,意思是依赖的值为空或发生变化时,变依赖的帮助值要清空。此场景比较特殊,城市依赖于省,开发人员通过

22、扩展构件在选择了某个字段后,一次给省和城市赋上了值,程序检测到省发生了变化,所以城市的值被清空,针对这种情况,我们要在表单设计时去修改系统自动生成的依赖表达式(一般开发人员没注意这个细节,认为依赖表达式是由系统生成,不允许修改的误码区) 。27, 对于时间类型的控件,如果对应数据库中的值为空的化,该列显示的值不为空?Re: 对于数据模型上是日期类型的字段,表单在加载数据的时候,检测到绑定的结果为DBNull 时,会自动赋一个 new datetime(),这样保证 XmlDataDocument 中文档节点存在,并且排除 DBNull 绑定的控件在界面操作的过程中报错,此问题的解决方案:扩展构

23、件给时间控件增加 CustomeDisplayText 事件,代码如下;if (e.Value != null) 28, 部分客户端网上报销表单定义中时间的显示格式设置不起作用?Re: 针对这种情况,请检查客户端操作系统区域和语言设置, “控制面板” 区域和语言”, 在“格式”Tab 页检查日期时间的设置是否正确,一般设置如下:29, 在扩展的构件代码中,如果设置列表某些单元格根据条件判断不允许用户进行编辑?Re: 在 Dev 的 GridControl 表格控件, 列是不允许操作的,在单元格编辑时,实际是激活了列内嵌的输入控件,要控制列的只读,通过在单元格激活内嵌控件之前的事件(Showin

24、gEditor)中处理,调 e.cancel = true,让编辑控件激活不了就可以30, 如果在列表中增加一 CheckBox 选择列,设置列表多选,并在该列对应的标题上设置“全选”与“反选”?Re: 此场景对应的 CheckBox 列实际在数据库中没有对应的字段的,只是对列表界面上数据多选的支持,因此,我们在列表绑定的模型上增加一虚拟列,列的数据类型对应为 Bool型,在表单设计时,将该列加入到列表上,如果不希望显示标签内容,将列内嵌的CheckBox 控件的标签置为空,同时设置该列的“是否全选”属性为 True, 如下图:注意:要设置表单窗体加载后事件中挂构件方法,设置整个界面的 Rea

25、dOnly 属性为 False即可。31, 部分客户在凭证制单选择往来的辅助出错?Re: 遇到过几个客户均出现这种问题,查找出来的原因是用户使用的是MSS_SqlServer2000 的数据库,在平台提供的分页获取数据的存储过程中使用了MaxVarchar 类型,在 2000 数据库上不支持,遇到此问题,请从http:/202.102.145.28/bbs/showtopic-1119.aspx 的分页存储过程执行32, ADP 表单在获取数据时,针对带年度的数据库表,在扩展构件中如何获取指定年度的数据? 如,在 2012 年查询 2011 年的凭证历史数据?Re: GSP 平台数据访问引擎在

26、处理带年度表时,年度获取规则如下:1) , 检查是否有传入的年度。 扩展代码中传入方式如下:/当前表单获取数据UriDataURI uri = this.DefaultInstanceData.URI;/指定获取数据年度uri.Filter.FiscalYear = XXX;/重新加载数据instance.DefaultLoad = true;instance.LoadData(uri);2), 如果年度不是从外部传入,则系统去检查当前 Session 中“会计年度”是否有值,若存在,则使用 Session 中会计年度。3),若上面两步结果都不存在,则系统去获取当前业务日期对应的年度.33,

27、主从结果的单据,如果只对针对表头的数据进行增、删、改等编辑操作,可以如何设置?Re: 在数据模型上设置子对象为只读即可,如下图:34,当用户选择帮助后,可以对选择的值进行修改,这个值是帮助上没有的,也就是既可以选择帮助又可以手工录入,其实就是可以利用帮助完成录入,同时可录入的值不用受这个帮助的约束?Re: 可以将该输入控件换成智能帮助控件,设置控件的“强制约束”属性设为 False.35, 智能帮助控件返回值有时不能正确的返回名称,编号能正确返回。Re: 在 ADP 表单设计时,直接从模型上拖一个关联字段到表单上,在设计器上系统会自动匹配智能帮助控件与该字段绑定,控件的长度属性一般是默认为模型

28、上的长度(36位),但在实际应用中,我们期望该控件显示关联出来的名称,所以我们会修改绑定字段,这样绑定字段变了,控件长度设置未变,一般还是 36 位,当名称对应的数据超过 36 位时,值即显示不出来,所以这时手工要修改一下控件的长度.37, 定义的列表智能帮助,帮助出现重复数据(复合主键)Re: 对于列表帮助,如果数据对象在数据库中使用的是复合主键,在调用分页存储过程取数时,会取出一些重复的数据,我们的建议对于采用复合主键的数据源建智能帮助时,绑定数据对应的数据对象采用视图替换数据库中的实表,在视图中虚拟唯一主键来解决。38, 扩展构件在框架中以 Tab 页打开新窗体,界面快捷键不可用?Re: 框架在打开 ADP 表单时有特殊处理,将整个 Form 窗体的边框等属性干掉,再加载到框架的 Tab 容器中,因此在 ADP 表单在 show 出来后注册如下的代码:form.Shown += new EventHandler(form_Shown);void form_Shown(object sender, EventArgs e)XForm form = sender as XForm;form.UI.BarManager.Form= WorkbenchSingleton.Workbench.ActiveWorkbenchWindow as Form;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 建筑建材

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。