加入收藏 | 设为首页 | Life家族 | SCMLife | RMLife | PMLife | SQALife | TESTLife | 企业VIP专区 | 中文化荣誉殿堂
 
发新话题
打印

[原创] 多级目录联动的perl实现( 此文章被查看:313次,被回复:0篇!! )

本主题由 懂你 于 2008-11-15 22:22 加入精华

多级目录联动的perl实现

好像看到好多人讨论这个,但是没有人给出代码,我想应该不说很复杂吧,把自己先前实现的代码放出来吧。

我做了一个维护工程材料的无状态对象,效果如下:


其中一级目录和二级目录联动。基本思路是:当一级目录的内容发生变化时,通过查询找到对应的二级目录的值,然后把结果set到二级目录字段
字段如下:其中一级目录和二级目录都是reference的对象。

一级目录对象的字段:


二级目录对象的字段:


材料对象的字段:


材料对象中,一级目录字段 更改的值 设置的hook如下:
       
           $entity->SetFieldValue("二级目录","");

        $sessionObj = $entity->GetSession();

        my @choices;

        my $selectedName = $entity->GetFieldValue("一级目录")->GetValue();

        $queryObj = $sessionObj->BuildQuery("材料二级目录");
        $queryObj->BuildField("名称");

        $filterObj = $queryObj->BuildFilterOperator($CQPerlExt::CQ_BOOL_OP_AND);

        $filterObj->BuildFilter("一级目录",$CQPerlExt::CQ_COMP_OP_EQ,[$selectedName]);
        $resultSetObj = $sessionObj->BuildResultSet($queryObj);
        $resultSetObj->Execute();

        while ($resultSetObj->MoveNext() == $CQPerlExt::CQ_SUCCESS) {
               
                $name   = $resultSetObj->GetColumnValue(1);
                   push(@choices,$name);
        }

        $entity->SetFieldChoiceList("二级目录",\@choices);

OK,这样就搞定了。如果扩展到三级目录联动,也没问题,和上面类似加些代码就可以了。




© 本文为 nick_ckSCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员

TOP

发新话题