다음 예제에서 Defect 레코드 유형에는 product(Product 레코드 유형에 대한 참조) 및 owner(User에 대한 참조)의 두 필드가 있습니다. 각 Product 레코드 유형에는 contributors(User에 대한 참조 목록)라는 필드가 있습니다.
Pruduct에 대한 값이 변경될 때마다 owner 선택사항 목록 필드가 업데이트되도록 하려면, 선택사항 목록 재계산 옵션을 사용하는 대신 InvalidateFieldChoiceList 메소드를 사용할 수 있습니다. 자세한 정보는 후크 사용을 위한 성능 고려사항을 참조하십시오.
sub product_ValueChanged { my($fieldname) = @_; # $fieldname as string scalar # record type name is Defect # field name is product # Make sure that the choice list for owner is based on # this new value for product. $entity->InvalidateFieldChoiceList("owner"); }
그리고 필드 소유자에 대한 선택사항 목록 후크를 추가합니다.
sub owner_ChoiceList { my($fieldname) = @_; my @choices; # $fieldname as string scalar # @choices as string array # record type name is Defect # field name is owner # Is the value of product set? If not, return an empty list. my $productFieldInfo = $entity->GetFieldValue("product"); return @choices unless $productFieldInfo->GetValidationStatus() == $CQPerlExt::CQ_KNOWN_VALID; return @choices unless $productFieldInfo->GetValue() ne ""; # Field product is set and valid. # Get the list of contributors on this product. @choices = $entity->GetFieldValue("product.contributors") ->GetValueAsList(); return @choices; }
Sub product_ValueChanged(fieldname) ' fieldname As String ' record type name is Defect ' field name is product InvalidateFieldChoiceList "owner" End Sub
그리고 필드 소유자에 대한 선택사항 목록 후크를 추가합니다.
Sub owner_ChoiceList(fieldname, choices) ' fieldname As String ' choices As Object ' record type name is Defect ' field name is owner ' Is the value of product set? If not, return an empty list. Dim productFieldinfo set productFieldinfo = GetFieldValue("product") if productFieldinfo.GetValidationStatus() <> AD_KNOWN_VALID then exit sub productFieldInfovalue = productFieldinfo.GetValue() if productFieldInfovalue = "" then exit sub ' Field product is set and valid. ' Get the list of contributors on this product. Dim productFieldvalues productFieldvalues = GetFieldValue("product.contributors").GetValueAsList() for each contributor in productFieldvalues choices.AddItem contributor next End Sub
조치를 시작할 때마다 owner_ChoiceList가 한 번 실행되고, product를 변경할 때마다 owner 선택사항 목록이 유효하지 않은 것으로 표시됩니다. 그런 다음 사용자 인터페이스는 선택사항 목록을 요청하여 선택사항 목록 후크가 재실행되도록 합니다.