2016-09-27 1 views
1

저는 C#을 처음 사용하기 때문에이 모든 잘못을 범할 수도 있습니다. 두 개의 콤보 상자가 있습니다. 값이 있으면 다른 하나는 항상 string.Empty이어야합니다. 내 문제는 일단 내가 string.Empty 다른 설정 한 값을 변경합니다. 물론 이벤트를 발생시키고 컨트롤을 설정하여 string.Empty로 변경했습니다. 그래서 항상 두 번 값을 입력해야합니다. 나는 이것을 방지하기 위해 여러 if 문을 시도했지만 아무것도 작동하지 않았습니다. ValueChanged를 사용하고 있습니다. 다른 이벤트를 사용해야합니까? 에피 코 ERP에서 콤보 상자 두 개의 cbos에 영향을 미치는 ValueChanged 이벤트

private static void cboJobDetailer_ValueChanged(object sender, System.EventArgs args) 
{ 
    // ** Place Event Handling Code Here ** 
    if (cboJobDetailer.Value != string.Empty) { 
     var edvJobPart = (EpiDataView)oTrans.EpiDataViews["JobPart"]; 
     edvJobPart.dataView[edvJobPart.Row]["BI_JobOutsourceID_c"] = string.Empty; 
     cboOutsourceCo.Value = string.Empty; 
    } 
} 

private static void cboOutsourceCo_ValueChanged(object sender, System.EventArgs args) 
{ 
    // ** Place Event Handling Code Here ** 
    if (cboOutsourceCo.Value != string.Empty){ 
     var edvJobPart = (EpiDataView)oTrans.EpiDataViews["JobPart"]; 
     edvJobPart.dataView[edvJobPart.Row]["BI_JobDetailerID_c"] = string.Empty; 
     cboJobDetailer.Value = string.Empty; 
    } 
} 

콤보 상자는 이것이의 valueChanged 이벤트를 구현하는 Infragistics의 UltraCombo에서 상속하는 Ice.Lib.Framework.EpiUltraCombo입니다.

답변

0

표준 .Net WinForms는 제어 이벤트를 사용하지만 Epicor ERP는 JobPart_Column.ColumnChanged과 같은 데이터 변경 이벤트에 응답하도록 설계되었습니다. 이 DataTable은 UI 사용자 지정 스크립트에서 정의됩니다.

이벤트 발생을 막기 위해 코드의 데이터를 변경하는 동안 모듈 수준 플래그를 설정하십시오. 그런 다음 이벤트에서이 문제를 테스트하면 이벤트가 계속 실행되지만 아무 것도하지 않습니다.

bool dataChangingInCode = false; 

    public void InitializeCustomCode() 
    { 
     JobPart_Column.ColumnChanged += JobPart_ColumnChanged; 
    } 

    private void JobPart_ColumnChanged(object sender, DataColumnChangeEventArgs e) 
    { 
     if (dataChangingInCode) return; 

     switch (e.Column.ColumnName) 
     { 
      case "BI_JobDetailerID_c": 
       dataChangingInCode = true; 
       e.Row["BI_JobOutsourceID_c"] = string.Empty; 
       dataChangingInCode = false; 
       break; 
      case "BI_JobOutsourceID_c": 
       dataChangingInCode = true; 
       e.Row["BI_JobDetailerID_c"] = string.Empty; 
       dataChangingInCode = false; 
       break; 
     } 
    } 
+0

감사 웹. 정적 클래스 (예, 코드 생성기를 사용)로 작동하도록 수정하거나 기존 클래스를 수정하여 더 이상 정적이 아니도록 수정해야합니다. 나는 코드 생성기를 사용할 필요가 없기 때문에 C#으로 더 많은 시간을 할애해야한다는 것을 알 수있다. –

관련 문제