2012-03-19 2 views
0

GridView 열의 유효성 검사에 접근하는 방법에 대한 제안이 필요합니다.GridView 행 확인

내가 현재 가지고있는 GridView는 세 개의 열 (테스트, 결과, 완료 날짜)이 있습니다.

테스트 열의 경우 SQL 스크립트를 기반으로 미리 채워집니다. 결과 열은 사용자가 테스트 결과를 입력해야하는 빈 텍스트 상자이며 날짜 열은 사용자가 완료 테스트 완료 날짜를 입력 할 빈 텍스트 상자를 포함하는 결과 열과 동일합니다. 나는 결과 칼럼, 현재 칼렌다 익스텐더를 사용하고있는 날짜 컬럼, 익스텐더와 밸리데이터를 편집하는 마스크를 유효하게 할 수 있기를 원한다. 이제 결과 열의 경우 유효성 검사가 테스트에 따라 다를 수 있습니다. 테스트 ABA는 테스트 CBA가 True/False 일 수있는 반면 2-7 사이의 결과 만 가질 수 있습니다. 각 필드의 유효성을 검사하는 방법을 모릅니다. 네가 나를 도울 수 있기를 바랍니다. 감사.

<asp:GridView ID="grdResults" runat="server" 
    CssClass="gridview" 
    RowStyle-CssClass="gridview_itm" 
    AlternatingRowStyle-CssClass="gridview_aitm" 
    HeaderStyle-CssClass="gridview_hdr" 
    Width="100%" AutoGenerateColumns="False"> 
    <Columns> 
     <asp:TemplateField HeaderText="Test"> 
      <ItemTemplate> 
       <asp:Label ID="lblTest" runat="server" Text='<%#Eval("Test")%>'></asp:Label> 
      </ItemTemplate>             
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Result"> 
      <ItemTemplate> 
       <asp:TextBox ID="tbResult" runat="server" ></asp:TextBox> 
      </ItemTemplate>             
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Date Completed"> 
      <ItemTemplate> 
       <asp:TextBox ID="tbDate" runat="server" ></asp:TextBox> 
       <asp:Image ID="imgCalendar" runat="server" ImageUrl="~/App_Themes/Sugar2006/images/Calendar_scheduleHS.png" ImageAlign="Middle" /> 
       <asp:CalendarExtender ID="ce" runat="server" TargetControlID ="tbDate" PopupButtonID="imgCalendar" />   
       <asp:MaskedEditExtender ID="mex" runat="server" 
        TargetControlID="tbDate" 
        Mask="99/99/9999" 
        MaskType="Date" 
        MessageValidatorTip="true" 
        OnFocusCssClass="MaskedEditFocus" 
        OnInvalidCssClass="MaskedEditError" /> 
       <asp:MaskedEditValidator ID="mev" runat="server" 
        ControlToValidate="tbDate" 
        ControlExtender="mex" 
        Display="Dynamic" 
        InvalidValueMessage="This date is invalid" Font-Bold="True" 
        ForeColor="#D50000" /> 
      </ItemTemplate>             
     </asp:TemplateField>                
    </Columns>   
</asp:GridView> 
+0

GridView 질문이 아니기 때문에 유효성 검사에만 집중하여 질문을 단순화 할 수 있습니까? 또한 여러분이 실제로 기대하고있는 것이 명확하지 않습니다 ('test abc'와'test cba'는 무엇입니까?). –

+0

글쎄, 내가 GridView Field Validation을하고 싶다고 생각하기 때문에 ... –

+0

"Tests"가 의미하는 바는 의료 테스트 ... Test - Flue Shot - 나는 단지 샘플 테스트 (ABC) (CBA) ... –

답변

1

의 모든 필요한 유효성 검사기를 추가하고 활성화/"테스트 값"에 따라 RowDataBound에서 그들을 해제 응답으로 내 의견을 추가 (질문으로 추상적 인 내 예를 유지).

void GrdResults_RowDataBound(Object sender, GridViewRowEventArgs e) 
    { 
    if(e.Row.RowType == DataControlRowType.DataRow) 
    { 
     DataRowView rowView = (DataRowView)e.Row.DataItem; 
     String testValue = rowView["Test"]; 
     CompareValidator cv1 = (CompareValidator)e.Row.FindControl("cv1); // checks between 2-7 
     CompareValidator cv2 = (CompareValidator)e.Row.FindControl("cv2); // checks true/false 
     cv1.Enabled = testValue.ToUpper().Equals("ABC"); 
     cv2.Enabled = !cv1.Enabled; 
    } 
    }