2010-05-16 4 views
1

순수하게 선언적으로 ASP.NET GridView에서 유효성 검사를 활성화 할 수 있습니까?ASP.NET GridView - 선언적으로 유효성 검사를 활성화하는 방법

나는 시도했다 :

  • 경우 SelectMethod 및 UpdateMethod과 ObjectDataSource를 결합한의 GridView는

    을 정의
  • 의 GridView 일부 읽기 전용 BoundField 열 및 그 EditTemplate는 텍스트 상자와 포함 된 TemplateField을 포함 TextBox에서 숫자 입력 만 허용하는 RegularExpressionValidator입니다.

  • GridView에는 또한 ShowEditButton = true 및 CausesValidation = true 인 CommandField가 있습니다.

난 다음, 잘못된 값을 입력, 편집을 클릭 저장 클릭하면

는, 거기에 다시 게시하고, 예외가 (입력 문자열이 올바른 형식이 아니었다) 서버에서 발생합니다.

서버의 RowUpdating 이벤트 처리기에 유효성 검사 코드를 추가하여이 문제를 피할 수 있지만 (아래 참조)이 코드를 추가하지 않고 유효성 검사를 강제하는 선언적 방법이 있습니까?

protected void MyGridView_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    Page.Validate("MyValidationGroup"); 
    if (!Page.IsValid) 
    { 
     e.Cancel = true; 
    } 
} 

답변

0

코드가 필요합니다.

"클라이언트 측 유효성 검사 이외에도 포스트 백 이벤트를 처리 할 때 Page.IsValid를 호출하는 것이 중요합니다."

http://weblogs.asp.net/rajbk/archive/2007/03/15/page-isvalid-and-validate.aspx

갱신

보일러 플레이트 코드를 방지하려면 모든 페이지가 기본 클래스에서 상속 및 모든 사용자 컨트롤이 다른 기본 클래스에서 상속있을 수 있습니다. 기본 클래스는 공통 논리를가집니다 (위의 것과 같습니다). 그런 다음 수동으로 와이어 링하거나 제어 트리를 통과하여 이벤트를 자동으로 연결해야합니다.

나는 개인적으로 현재 가지고있는 것을 고수 할 것입니다.

+0

서버 측 유효성 검사가 필요하다는 것을 알고 있습니다. 제 질문은 선언적으로 사용할 수 있는지 여부입니다. 추가 할 필요가있는 동일한 상용구 코드의 양을 줄이려고합니다. 그러나 당신이 옳다고 생각합니다 : GridView 및 유사한 클래스에는 "ValidationGroup"속성이 없으며,이 항목이 없으면 유효성 검사가 필요한 항목을 알지 못합니다. – Joe

관련 문제