2011-07-04 11 views
1

컨트롤의 다른 메서드를 정확히 동일한 코드와 연결해야합니다. 나는 지금 이렇게하고있다 :OnItemInstered, OnItemUpdated 동일한 코드 뒤

protected void dgvProperty_ItemInserted(object sender, GridInsertedEventArgs e) 
{ 
    BindItems(); 
} 

protected void dgvProperty_ItemDeleted(object sender, GridDeletedEventArgs e) 
{ 
    Binditems(); 
} 

protected void dgvProperty_ItemUpdated(object sender, GridUpdatedEventArgs e) 
{ 
    BindItems(); 
} 

틀린 느낌. 반복을 피하려면 어떻게해야합니까?

답변

1

내가 위에서 보여주고있다 코드 아무것도 '잘못'이 있다고 생각하지 않지만, DGV 객체는 당신이 그것을 할 수 있습니다 당신의 통제 아래 클래스 인 경우이 논리를

를 통합 할 수 항목이 삽입, 삭제 또는 업데이트 될 때마다 발생하는 또 다른 이벤트를 발생시킵니다. 그러면이 이벤트를 간단하게들을 수 있습니다. 또는 dgv 객체를 하위 클래스 화하여 위에 표시된 비헤이비어를 추가 할 수 있습니다.

편집 : 예를 들어 보겠습니다. 귀하의 샘플에서 이벤트 args에 대한 빠른 google을했는데 Telerik RadGrid를 사용하고있는 것으로 추측합니다. 그래서 교장이 제네릭이지만 내 예제를 기반으로 삼을 것입니다.

public class ExampleGrid : RadGrid 
{ 
     public ExampleGrid() : base() 
     { 
      base.ItemInserted += (o, e) => NotifySomethingChanged(); 
      base.ItemDeleted += (o,e) => NotifySomethingChanged(); 
      base.ItemUpdated += (o,e) => NotifySomethingChanged(); 
     } 

     public event EventHandler SomethingChanged; 

     private void NotifySomethingChanged() 
     { 
      var handler = this.SomethingChanged; 
      if (handler != null) 
        handler(this, EventArgs.Empty); 
     } 
    } 

이제 SomethingChanged 이벤트를들을 수 있습니다. 이것은 컨트롤에서 3 개의 이벤트 핸들러를 연결하는 것보다 약간 좋지만, 이와 같은 작업을 자주한다면 가치가있을 수 있습니다.

+0

가능한 경우 간단한 예제를 제공 할 수 있습니까? – user194076

+0

@ user194076 예를보기 위해 편집 됨 – cordialgerm

1

각 이벤트에 대한 인수가 다르기 때문에 불행히도 아닙니다. GridXXXEventArgs가 모두 동일한 클래스 (즉, GridEventArgs)에서 상속하는 경우 조금 더 깔끔하게 처리 할 수 ​​있지만이 경우는 여기에 해당하지 않습니다.

각 이벤트에서 호출되는 단일 메서드를 사용하여 올바른 작업을 수행하고 있습니다.

관련 문제