Farseer

MRPII学习中......

导航

2006年10月22日 #

在Dialog上添加Dimension中的一个元素

在Form上如果想只添加Dimension的某一个是很很简单的事情,只需要指定Dimension[i]就可以了,但在如果想在Runbase的dialog上动态添加Dimension上的某个元素可就不那么简单了.试了半天都没办法加上去,最后只能曲线救国,想了如下三种办法:
1.新建一个EDT,该EDT只有一个元素,跟想要添加到Dialog上的Dimension中的那个元素相对应,与Dimension建立的关系也一样.
如下图所示:

然后重载Dialog,用如下代码添加就可以了

_dialog.addField(typeId(Dimension1));
2.依然用扩展数据类型Dimension添加,把不想要的隐藏掉.如下面代码所示:
  fieldCAFrom = _dialog.addFieldValue(typeid(Dimension),strCAFrom);
    d 
= new Dictionary();
    dt 
= new DictType(d.typeName2Id("Dimension"));

    
for(i=1;i<=dt.arraySize();i++)
    
{
        
if(i!=1)
        
{
            controlName 
= fieldCAFrom.fieldname(i);
            _dialog.formBuildDesign().control(controlName).visible(
false);
         }

    }

3.添加一个string类型的控件,然后重载其Lookup方法,自己写一个窗体出来.

posted @ 2006-10-22 13:33 佛西亚 阅读(121) 评论(0) 编辑

数组类型EDT的元素个数

在Axapta中有一些类封装了对AOT的查询操作,比如Dictionary,DictRelation,DictClass,DictType等.如果想知道某个扩展数据类型的有几个元素组成的,可以用如下代码:
static void getArrarySize(Args _args)
{
    Dictionary d;
    DictType   dt;
    ;
    d 
= new Dictionary();
    dt 
= new DictType(d.typeName2Id("Dimension"));
    print dt.arraySize();
    pause;

}
当然某个EDT的其他属性也可以通过DictType来查询,比如基类型等.

posted @ 2006-10-22 12:53 佛西亚 阅读(79) 评论(0) 编辑