2017-05-19 10 views
1

화면의 특정 입력란을 사용 중지 할 때를 결정할 수있는 청구서 및 조정에 맞춤 드롭 다운 입력란이 있습니다. 다음과 같은 논리를 사용하고 있는데, 작동하지 않는 것 같습니다 (주석 처리 된 행은 작동하지 않습니다). 나는 사용자 필드에 true로 commitchanges를 설정 한 - 그리고 나는 그것이 타격을 받고있어 확인하기 위해 코드를 강화했습니다청구서 및 조정에서 입력란을 사용할 수 없습니다.

protected virtual void APInvoice_UsrPOStatus_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e) 
    { 
     var apr = (APRegister)e.Row; 
     if (apr == null) return; 

     var aprext = PXCache<APRegister>.GetExtension<APRegisterExt>(apr); 
     if (aprext == null) return; 

     if (aprext.UsrPOstatus != "Open") 
     { 
      PXUIFieldAttribute.SetEnabled<APRegister.docType>(sender, apr, false); 
      PXUIFieldAttribute.SetEnabled<APRegister.refNbr>(sender, apr, false); 
      //PXUIFieldAttribute.SetEnabled<APInvoice.docType>(Base.Document.Cache, null, false); //(OpenSourceDataDetail.Cache, null, true); 
      //PXUIFieldAttribute.SetEnabled<APInvoice.refNbr>(Base.Document.Cache, null, false); 
     } 
    } 

내가 오류를 얻을 수 없지만, 아무 일도 발생하지 않습니다. 이 필드를 비활성화 할 수 있습니까?

APInvoice를 사용할 지 APRegister를 사용 할지도 확실하지 않습니다.

+0

APInvoice는 APRegister에서 상속됩니다. 나는 기본 그래프를 따르고 타입 캐스팅을 피하기 위해 APInvoice를 사용할 것입니다. –

답변

0

필드 사용 가능 상태 및 표시 여부를 변경할 수없는 경우 일반적으로 이후 이벤트가 변경 사항을 무시하기 때문입니다.

작업중인 그래프 확장의 기본 그래프 (APInvoiceEntry)는 APInvoice_RowSelected 이벤트의이 필드에서 SetEnabled를 호출합니다.

이러한 호출을 재정의하려면 확장 프로그램에서 동일한 이벤트를 재정의해야합니다. 그러면 이벤트 처리기가 마지막으로 실행 된 것입니다.

protected virtual void APInvoice_RowSelected(PXCache cache, PXRowSelectedEventArgs e) 
{ 
  APInvoice apInvoice = e.Row as APInvoice; 

  if (apInvoice == null) 
  { 
    return; 
  } 

  PXUIFieldAttribute.SetEnabled<APInvoice.docType>(cache, apInvoice, false); 
  PXUIFieldAttribute.SetEnabled<APInvoice.refNbr>(cache, apInvoice, false); 
}