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

上传人:b****5 文档编号:6479570 上传时间:2023-01-06 格式:DOCX 页数:12 大小:273.63KB
下载 相关 举报
ADP应用开发常见问题解答.docx_第1页
第1页 / 共12页
ADP应用开发常见问题解答.docx_第2页
第2页 / 共12页
ADP应用开发常见问题解答.docx_第3页
第3页 / 共12页
ADP应用开发常见问题解答.docx_第4页
第4页 / 共12页
ADP应用开发常见问题解答.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

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

《ADP应用开发常见问题解答.docx》由会员分享,可在线阅读,更多相关《ADP应用开发常见问题解答.docx(12页珍藏版)》请在冰豆网上搜索。

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

ADP应用开发常见问题解答

ADP应用开发常见问题解答

1,在一张制单卡片界面上控件绑定字段设置数据列权限,如果针对当前用户没有查看该列的数据权限的时候,此处显示为空白,导制整个制单界面布局混乱,请问如何解决?

Re:

将卡片维护信息包含的控件放置在一个TabLayout容器控件中,第个控件占据一个单元格,并设置控件的Dock属性为Fill,同时设置TabLayout容器控件的“自动重新布局”属性。

表单引擎在解析的时候,会自动将可见的界面控件进行了重新布局。

2,在表单列表上选择显示合计功能后,合计出来的金额和数量,都是8位小数,没有找到哪里能设置该合计行的小数点位数

Re:

列表控件列金额和数量的设置实现是设置该列内嵌的数字控件的精度,对于合计列,是Grid控件自已的属性,在ADP表单列表控件上,列中某列后,设置合计列的显示格式如:

{0:

n2},0:

表示计算出来的数字,n2表示格式化掩码。

数字类型掩码输入格式:

预定义掩码:

(下列预定义的掩码受当前区域(Culture)的影响)

Corc:

Currency货币如:

"¥123,456,789.12"

Dord:

Decimal录入整数如"123456789""-12"

Forf,Gorg:

Fixed-Point定长小数如"123456789.12""12.35"

Norn:

Number录入数字的整数部分会插入千位符如"123,456,789.12""-12.35"

P:

Percent百分数如录入的是"15%",则编辑器的值是15

p:

Percent百分数如录入的是"15%",则编辑器的值是0.15

c0:

货币整数如"¥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(2decimalplaces)如"123456789.12""-12.35"

n2:

Number(2decimalplaces)带千位符如:

"123,456,789.12""-12.35"

c3:

货币(三位小数)如"¥123,456,789.123""¥-12.345"

f3:

Fixed-point(3decimalplaces)如"123456789.123""-12.356"

n3:

Number(3decimalplaces)带千位符如:

"123,456,789.123""-12.356"

3,ADP表单上ComboBox、CheckComboBox、ImageComboBox控件绑定的字段在数据库中类型为非字符型时报错的处理方案?

Re:

CombBox、CheckComboBox、ImageComboBox控件在表单引擎解析时,默认绑定给它的数据源(DataTable)Value字段是字符型,如果在数据库中的字段设计为数字型,请在数据模型定义的时候将该字段的类型转换为字符。

4,在ADP表单设计过程中,输入控件对齐了(其中包含二字、三字、四字的标签),运行起来后对不齐,如何解决?

Re:

ADP设计器中包含的输入类控件是平台封装后的UseCotnrol,包含了Label标签和实际的输入控件,在设计器上设置的宽度实际是整个UserControl的宽度,在GSP5.2后的版本增加针对标签的宽度设置及标签文本齐属性,如下图:

5,数字类型的输入控件,新增数据时默认为0,如果设置数据为0的数字控件显示为空?

Re:

在GSP5.2版本增加了”零值是否显示”的属性,将该属性设为False,当数据为0时,界面显示为空,如下图:

6,我在Tab页中放入Iframe控件嵌入子表单,在框架内运行时加载时子表单的工具栏不能自动展示。

双击”GS系统工具条后“,子表单工具栏显示

Re:

在放IFrameElement的Tab页先放一个Panel容器,再将IFrameElement嵌在Panel容器内.

7,列表在切换视图方案时,除方案中定义的过滤条件外,我想通过扩展构件的方式,再追加一些求数的条件,请问在扩展构件中如何能获取到当前方案上定义的过滤条件?

Re:

在扩展构件中this.UI.CurrentStyleSolution即当前选中的方案,通过这个对象,即可获取到在方案上定义的过滤条件,代码示例如下:

//获取方案常用条件

StringcommonConditionString=CurrentStyleSolution.CommonCondition.ConditionString;

//获取方案高级条件

StringotherConditionString=CurrentStyleSolution.OtherCondition.ConditionString;

//获取方案排序条件

stringorderString=CurrentStyleSolution.Sort.SortString;

//此处可扩展自己追加的过滤条件,然后将取数条件进行溶合后获取数据,代码如下:

stringfilterStr=ExpressParser.Merge(CurrentStyleSolution.CommonCondition.ConditionString,

CurrentStyleSolution.OtherCondition.ConditionString);

GSPFilterfilter=newGSPFilter(filterStr,orderStr);

this.Form.Model.DefaultInstance.LoadData(newDataURI(filter));

8,一个计算框上设置掩码Percent(mode2),在该计算框失去焦点后,输入的数据就不显示了,如输入10.00%,失去焦点后,计算框中显示的值为0.00%,获取焦点后又变成了10.00%

Re:

表单上控件属性设置不正确,设置控件对应的掩码P2和精度2,不要均定义为0

9,平铺式分组面板NavBarControl控件,如何设置让其中的某个NavBarGroup根据界面空间大小自适应,类似Dock的属性?

Re:

平铺面板整个是个大的容器,里面可嵌多个分组的面板,Dock属性是针对整个大的容器,比较讨厌的是NavBarGroup不支持Dock属性,如果需要让某个NavBarGroup自适应,将设置“面板自动高度”属性为True,请注意,在一个NavBarControl里面只能设置其中的某一个Group自动高度属性为true,这块是在表单引擎中通过计算来实现的。

10,在列表中前面加一个checkbox复选框的目的是为了选中一行,在退出时不需要提示保存,但是目前总是提示保存,是否可以加一个设置,不需要保存的退出时就不再提示

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,一个ADP窗体上打开另一个窗体,在扩展构件中如何传递对象集合?

Re:

在GSP5.2版本后,在表单上增加了传递对象的属性参数,在扩展构件中的调用方法如下:

FormURIformURI=newFormURI(formDefID,initialActionID,argumentString);

//支持对象集合参数传递DictionaryDictVariable

formURI.DictVariabler=XXXX(要传递的对象)

//new新表单

XFormform=newXForm(formURI);

13,系统希望在有些地方增加自定义超链,比如表头有个物料编号,可以定义点击label时联查到物料字典,并且将input区的物料编号带入功能,实现联查

Re:

将控件的标签设置为空,同时在控件前插入超链控件,在控件的单击事件挂打开新窗体方法

14,网报输入法问题,部分电脑文字框无法输入汉字

Re:

客户端机器必须安装FrameWork2.0sp1

15,列表卡片模板类型的表单如何定义列表的过滤条件和排序条件

Re:

对于列表卡片在同一界面的表单模板,后台实际有两份实体数据,但表单视图默认的是卡片,要修改列表过滤条件时,将视图换回“列表”,修改完成后,再换回“卡片”(注意:

修改表单文档时切记将卡片对应的实体数据设置为默认实体源)

16,每次加载完实体数据,对界面展现数据进行客户端编辑后(数据提交前),如何获取原始数据DataSet获取方式(目前存的是_initialInstanceDocXml,且外部无法调用)

Re:

在GSP5.2版本,在实体元素(InstanceElement)上增加了属性(InitialInstanceDoc),属性值类型为InstanceDataDocument,通过该属性可获取初始数据对应的数据集(DataSet)或初始数据文档(InstanceDataDocument.DataDocument.OutXml).

17,一个表单列表加载数据量过大时(成千上万条数据),如何解决客户端打开效率及不时出现内存溢出的问题?

Re:

一般情况下,对于列表上的大数据量展现时,我们要求数据按分页的形式来展现,如若确实不能通过分页来实现的情况下(如大凭证),在GSP2012-02-28号后提供的补丁里面提供了表单加速处理的模式(请慎用),设置方式如下:

修改一下ADP表单设计器文档,在实体节点上增加“表单加速”属性FormSpeedUp="True"(看我红色标注的),

注:

必须动动表单上的控件或改改表单的备注属性,让表单的小星号出来,此时再切换到表单代码Tab页,直接在上面修改表单文档,这样修改后的文档点保存才能设置上属性。

如下图

18,在扩展构中,构件中取不到TabControl控件或TabPage控件的ID,只能取到其Text信息?

Re:

TabControl、TabPage控件对应的属性是Name,通过Name属性来获取.

19,在GridControl表格控件是如何增加删除上一页、下一页这些按钮,并可以在表单上配置其调用的事件?

Re:

在GSP5.2版本后增加了在表格增加按纽并调用配置构件方法的实现,如下图:

选择“显示内置导航”为True

在导航按纽集合中定义内置的按纽及OnClick事件绑定的方法,如下图

 

20,一主多从时如何控制某个子对象是否必填?

场景如下:

网上报销中的报销单据是一主多从的单据。

当存在多个明细区时,客户希望能够通过在表单定制时设置某个明细区为必填以控制填报人员必须填写明细记录的目的。

比如出差报销单中的出差明细记录,客户为了控制填报人员在出差时的出发地和到达地信息,在单据定制时启用了网上报销预留的明细1子对象,希望填报人在填写报销单时必须填写这些信息

Re:

在GSP5.2版本数据模型子对象上增加了数据提交时,子对象数据是否允许为空的设置,如下图:

21,带分组的智能帮助,对分组部分的过滤条件如何设置?

Re:

在GSP5.2版本,对于分组帮助,提供了针对分组源的过滤条件设置,如下图:

22,目前平台配置的必输项目没有录入时可以显示红色叉号,在扩展构件中进行业务规则验证不通过时,如何实现设置上红色叉号?

Re:

红色叉号用到的是DataRow本身带的方法,若要使用,请参照如下代码

//以编号验证列为例,设置红叉

DataRowrow=this.DefaultInstanceData.DataSet.Tables[0].Rows[0];

stringdictCode=Convert.ToString(row["DictCode"]);

if(string.IsNullOrEmpty(dictCode))

{

row.SetColumnError("DictCode","编号不允许为空!

");

return;

}

//如果验证通过了,则直接清除掉所有的叉叉

if(row.GetColumnsInError().Length>0&&row.HasErrors)

row.ClearErrors();

23,在扩展代码中,如何强制让状态机同步到指定状态?

Re:

示例代码如下:

StringstateID=XXX;(强制迁移的状态ID)

if(this.Model.StateMachine.IsRunning)

{

this.Model.StateMachine.CurrentStateID=stateID;

}

else

{

this.Model.StateMachine.Start(stateID);

}

24,扩展构件代码中,循环对列表控件列GridColumn控件布局等属性进行设置操作时,在列比较多(大于30列)时,效率非常低?

Re:

研究发现,在对列进行操作前,设置GridControl.SuspendLayout()方式或者不挂起布局都会导制效率低下,正确的使用方法如下:

GridControl.BeginInit();

//XXXXXXXXX对表格列进行了处理

GridControl.EndInit();

25,主从结构的单据,在表体上选择多值帮助后,在扩展构件中根据选择的值,循环调用新增行(InsertDetailAtLast),然后赋值处理时,效率非常低(子表字段列较多,并且定义的表达式很多)?

Re:

子表在新增行后,每次都会触发表达式的计算,在此场景中,表达式的循环将数据加载到有向图进行计算的过程,花费了大量的时间,为了避免在新增行的过程中触发表达式计算,可执行如下代码:

this.Model.SuspendModelProcess();

XXXXXX(此处是你自己的代码处理,比如新增行,给新增的行赋值等,处理完后,再将模型处理恢复

this.Model.ResumeModelProcess(false);

26,对方城市依赖于对方省,设置了依赖表达式,帮助后,给对方省与对方程序赋值后,点保存,对方城市的值给清空了,去掉依赖表达式就正常?

Re:

在ADP表单设计器,我们一般给某个帮助控件设置过滤条件中引用了模型上的其它字段的值作为过滤条件的一部分时,系统会在此帮助控件上自动生成一个依赖表达式,意思是依赖的值为空或发生变化时,变依赖的帮助值要清空。

此场景比较特殊,城市依赖于省,开发人员通过扩展构件在选择了某个字段后,一次给省和城市赋上了值,程序检测到省发生了变化,所以城市的值被清空,针对这种情况,我们要在表单设计时去修改系统自动生成的依赖表达式(一般开发人员没注意这个细节,认为依赖表达式是由系统生成,不允许修改的误码区)。

27,对于时间类型的控件,如果对应数据库中的值为空的化,该列显示的值不为空?

Re:

对于数据模型上是日期类型的字段,表单在加载数据的时候,检测到绑定的结果为DBNull时,会自动赋一个newdatetime(),这样保证XmlDataDocument中文档节点存在,并且排除DBNull绑定的控件在界面操作的过程中报错,此问题的解决方案:

扩展构件给时间控件增加CustomeDisplayText事件,代码如下;

if((e.Value!

=null)

&&(e.ValueisDateTime)

&&(DateTime)e.Value==newDateTime())

{

e.DisplayText="";

}

28,部分客户端网上报销表单定义中时间的显示格式设置不起作用?

Re:

针对这种情况,请检查客户端操作系统区域和语言设置,“控制面板””区域和语言”,在“格式”Tab页检查日期时间的设置是否正确,一般设置如下:

29,在扩展的构件代码中,如果设置列表某些单元格根据条件判断不允许用户进行编辑?

Re:

在Dev的GridControl表格控件,列是不允许操作的,在单元格编辑时,实际是激活了列内嵌的输入控件,要控制列的只读,通过在单元格激活内嵌控件之前的事件(ShowingEditor)中处理,调e.cancel=true,让编辑控件激活不了就可以

30,如果在列表中增加一CheckBox选择列,设置列表多选,并在该列对应的标题上设置“全选”与“反选”?

Re:

此场景对应的CheckBox列实际在数据库中没有对应的字段的,只是对列表界面上数据多选的支持,因此,我们在列表绑定的模型上增加一虚拟列,列的数据类型对应为Bool型,在表单设计时,将该列加入到列表上,如果不希望显示标签内容,将列内嵌的CheckBox控件的标签置为空,同时设置该列的“是否全选”属性为True,如下图:

注意:

要设置表单窗体加载后事件中挂构件方法,设置整个界面的ReadOnly属性为False即可。

31,部分客户在凭证制单选择往来的辅助出错?

Re:

遇到过几个客户均出现这种问题,查找出来的原因是用户使用的是MSS_SqlServer2000的数据库,在平台提供的分页获取数据的存储过程中使用了MaxVarchar类型,在2000数据库上不支持,遇到此问题,请从http:

//202.102.145.28/bbs/showtopic-1119.aspx的分页存储过程执行

32,ADP表单在获取数据时,针对带年度的数据库表,在扩展构件中如何获取指定年度的数据?

如,在2012年查询2011年的凭证历史数据?

Re:

GSP平台数据访问引擎在处理带年度表时,年度获取规则如下:

1),检查是否有传入的年度。

扩展代码中传入方式如下:

//当前表单获取数据Uri

DataURIuri=this.DefaultInstanceData.URI;

//指定获取数据年度

uri.Filter.FiscalYear=XXX;

//重新加载数据

instance.DefaultLoad=true;

instance.LoadData(uri);

2),如果年度不是从外部传入,则系统去检查当前Session中“会计年度”是否有值,若存在,则使用Session中会计年度。

3),若上面两步结果都不存在,则系统去获取当前业务日期对应的年度.

33,主从结果的单据,如果只对针对表头的数据进行增、删、改等编辑操作,可以如何设置?

Re:

在数据模型上设置子对象为只读即可,如下图:

34,当用户选择帮助后,可以对选择的值进行修改,这个值是帮助上没有的,也就是既可以选择帮助又可以手工录入,其实就是可以利用帮助完成录入,同时可录入的值不用受这个帮助的约束?

Re:

可以将该输入控件换成智能帮助控件,设置控件的“强制约束”属性设为False.

35,智能帮助控件返回值有时不能正确的返回名称,编号能正确返回。

Re:

在ADP表单设计时,直接从模型上拖一个关联字段到表单上,在设计器上系统会自动匹配智能帮助控件与该字段绑定,控件的长度属性一般是默认为模型上的长度(36位),但在实际应用中,我们期望该控件显示关联出来的名称,所以我们会修改绑定字段,这样绑定字段变了,控件长度设置未变,一般还是36位,当名称对应的数据超过36位时,值即显示不出来,所以这时手工要修改一下控件的长度.

37,定义的列表智能帮助,帮助出现重复数据(复合主键)

Re:

对于列表帮助,如果数据对象在数据库中使用的是复合主键,在调用分页存储过程取数时,会取出一些重复的数据,我们的建议对于采用复合主键的数据源建智能帮助时,绑定数据对应的数据对象采用视图替换数据库中的实表,在视图中虚拟唯一主键来解决。

38,扩展构件在框架中以Tab页打开新窗体,界面快捷键不可用?

Re:

框架在打开ADP表单时有特殊处理,将整个Form窗体的边框等属性干掉,再加载到框架的Tab容器中,因此在ADP表单在show出来后注册如下的代码:

form.Shown+=newEventHandler(form_Shown);

voidform_Shown(objectsender,EventArgse)

{

XFormform=senderasXForm;

form.UI.BarManager.Form=WorkbenchSingleton.Workbench.ActiveWorkbenchWindowasForm;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1