2010-07-12 2 views
0

asp.net 웹 응용 프로그램에서 세부 정보보기를 사용하고 있습니다.DetailsView 동일한 처리기로 항목 이벤트 (업데이트 된 삭제됨)

업데이트 된 이벤트와 삽입 된 이벤트가 동시에 발생하면 같은 방식으로 처리하고 싶습니다. 이벤트에서 공통적 인 상속이없는 두 개의 개별 클래스가 있다고 주장하기 때문에 기본적으로 동일한 코드로 두 개의 개별 메소드를 가져야합니다.

이 문제가 발생합니까?

예 :

protected void DetailsViewItemInserted(object sender, DetailsViewInsertedEventArgs e) 
    { 
     if (e == null) 
      return; 

     if (e.Exception != null) 
     { 
      e.ExceptionHandled = HandleException(e.Exception); 
      e.KeepInInsertMode = e.ExceptionHandled; 
     } 
    } 

    protected void DetailsViewItemUpdated(object sender, DetailsViewUpdatedEventArgs e) 
    { 
     if (e == null) 
      return; 

     if (e.Exception != null) 
     { 
      e.ExceptionHandled = HandleException(e.Exception); 
      e.KeepInEditMode = e.ExceptionHandled; 
     } 
    } 
내가 를 추출하고 싶습니다

경우 (예 == NULL) 반환; 가능하다면 어떤 종류의 일반적인 방법으로도 가능하다.

답변

1

나는 이러한 클래스가 EventArgs에서 직접 상속된다는 점에 실망합니다. 논리적으로 보아도 공통된 속성뿐만 아니라 EventArgs의 동일한 서브 클래스를 상속받을 수도 있지만 실제로 삽입 할 때 DetailsView를 사용하면 대부분 업데이트를 위해 사용합니다.

당신이하고 싶은 것은 동적 인 C#을 사용하여 수행 할 수 있습니다. 그것은 꽤 멋지다. 그리고 어쩌면 조금 우아 할지라도, 약간 더 많은 오버 헤드가있다.

이 시도는 (요구 C# 4.0) 작동 것이다 그러나 나는 시도하고이 프레임 워크의 일부로서 버튼 특정 이름을 호출하는 데 자신을 묶지 싶습니다 같은 소리

protected void DetailsView1_Inserted(Object sender, DetailsViewInsertedEventArgs e) 
{ 
    ProcessDetailsViewEventArgs(e); 
} 

protected void DetailsView1_Updated(Object sender, DetailsViewUpdatedEventArgs e) 
{ 
    ProcessDetailsViewEventArgs(e); 
} 

private void ProcessDetailsViewEventArgs(dynamic e) 
{ 
    if (e == null) 
     return; 

    if (e.Exception != null) 
    { 
     e.ExceptionHandled = HandleException(e.Exception); 
     e.KeepInEditMode = e.ExceptionHandled; 
    } 

} 
+0

그건 내가 원했던 그대로의 멋진 것입니다 ... 문제는 우리가 있습니다. (잘 그 고마워요.) –

0

편집 & 삭제 단추 CommandName을 제공하는 OnItemCommand, &을 사용하십시오. 이 이벤트는 두 시나리오를 처리합니다.

+0

그것은 다른 많은 개발자들에 의해 사용될 것이고 버튼을 특정 이름을 잃어 버리게 된 이유가 시간 내에 알게 될 것입니다. –

+0

그러면 원하는대로 코드를 호출하고 – TheGeekYouNeed

관련 문제