display method & edit method & cach display & sec

当我们在使用一个表做显示或操作时,需要用到另一个表的数据或该表的数据必须经过处理才可以显示时,可以考虑使用edit/display方法。

Display 方法:
修饰符display所修的方法,其返回值将被作为一个不可以修改的值在form和report上显示。如果你希望这个值可以被编辑,就是要edit方法。

<1>       Display方法的书写位置:
Display修饰符可以被用于以下方法:

(1)  Table下的方法

(2)  Form下的方法

(3)  Form data source下的方法

(4)  Report下的方法

(5)  Report design下的方法

Table下的display方法可以在多个form和report上重用。 Display 方法会在form被重绘时执行。不要在display方法上写复杂并且耗时的技术或操作。

被隐藏的tab页上的display方法不会被调用。并且,display方法可以被cach起来。

<2>       创建display方法
其格式如下:

将display修饰符放在返回值的前边,并且display方法必须有返回值。如:

display Amount amount()

当display方法被写在form data source下时,必须将data source作为参数传递给该display方法。当display的返回值被显示在form的grid control上时,需要将该display方法写在数据源下。如下:

display InventQty accumulated(InventBudgetInvent Budget)

除此之外,display方法不需要参数。

<3>       使用display方法
当作form control和report control上使用display方法时,控件的数据类型和display方法返回值的类型必须一致。

(1)  在form control上使用display

a)    设置control的DataSource属性为该display方法做在的dataSource。如果该属性为空,则默认该display方法被定义在form下。

b)    设置control的DataMethod属性为该display方法的方法名。

同时也可以设置control的ExtendedDataType和ArrayIndex属性。如果ExtendedDataType被设置,则该control会继承该EDT的格式、帮助信息等等。

如果该display方法返回一个array时,将ArrayIndex设置为0表示array的所有元素都会被显示在该control上。如果将ArrayIndex设置为一个非零正数n时,只有数组的第n个元素被显示。

(2)  在report control 上使用display

a)    设置control的Table属性为该display方法所属的table。如果该属性为空,默认该display方法是在report下被定义。

b)    设置control的DataMethod属性为该display方法的方法名。

可以参考:http://msdn.microsoft.com/en-us/library/aa595058(AX.10).aspx

二.Caching display方法
       当display方法是在aos上做计算,或记录需要从服务器端传递到客户端时,可以通过cach来提高display方法的性能。

       当数据被从后台数据库获取到后,display方法的的数据会被赋值,当form data source 调用reread方法时,这些数据会被刷新。

       将一个display方法cach起来需要通过如下步骤:

1)    定位到使用该display方法的form上

2)    Override该display方法所在的data source的Init方法,在该init方法的super()之后,调用FormDataSource.cacheAddMethod方法。cacheAddMethod方法的第一个参数是要被cach的display方法的方法名,第二个参数(默认为true)标识在一条记录被写到数据库时是否更新该display方法。

可以参考:http://msdn.microsoft.com/en-us/library/aa596691(AX.10).aspx

 三. Edit 方法
       被edit修饰符所修饰的方法,其返回值可以被显示在form上,同时用户可以编辑这个值。

       <1>       edit方法的书写位置:
a)    Table下的方法

b)    Form下的方法

c)    Form data source下的方法

Table下的edit方法可以在多个form下重用。

当form在重绘时会调用edit方法,不要在edit方法中写复杂且耗时的操作。

被隐藏的tab页上的edit方法不会被调用。

       <2> 创建edit方法
a)    在table下创建edit方法时,其格式如下:

edit FreeTxt txtDefault(boolean Set, FreeTxt Txt)

将edit写在返回值的前边,第一个参数是boolean类型,用于表示用户是否在control中输入或添加了值,第二个参数被用于存放用户所输入的值,该参数的数据类型必须和control的数据类型一致。

b)    在form下创建edit方法时,其格式如下:

edit Amount settle(boolean set, CustTrans _CustTrans, Amount U)

第一个参数是boolean类型,用于表示用户是否在control中输入或添加了值,第二个参数是该edit方法所在的data source,第三个参数用于存放用户所输入或编辑的值,该参数的数据类型必须和control的数据类型一致。

              Edit方法也必须有返回值。

       <3>edit方法的使用:
当作form control和report control上使用edit方法时,控件的数据类型和edit方法返回值的类型必须一致。

(1)  在form control上使用edit

c)    设置control的DataSource属性为该edit方法做在的dataSource。如果该属性为空,则默认该edit方法被定义在form下。

d)    设置control的DataMethod属性为该edit方法的方法名。

同时也可以设置control的ExtendedDataType和ArrayIndex属性。如果ExtendedDataType被设置,则该control会继承该EDT的格式、帮助信息等等。

如果该edit方法返回一个array时,将ArrayIndex设置为0表示array的所有元素都会被显示在该control上。如果将ArrayIndex设置为一个非零正数n时,只有数组的第n个元素被显示。

       可以参考:http://msdn.microsoft.com/en-us/library/aa637541(AX.10).aspx

 四.数据的保密性
       内核会自动执行Record level security检查,但当时有display和edit方法时会绕过Record level security检查,而在display和edit方法中可以访问一下不在权限内的数据,如果直接将这些数据显示出来,就会失去数据的保密性。所以在使用display和edit方法时,需要显示的做安全检查(如果需要的话)。

       详细可参考:http://msdn.microsoft.com/en-us/library/aa879172(AX.10).aspx

原文地址:https://www.cnblogs.com/Fandyx/p/2761606.html