Проверка строк GridView - PullRequest
0 голосов
/ 19 марта 2012

Мне просто нужно несколько советов о том, как подойти к проверке столбца GridView.

В настоящее время у меня есть GridView с тремя столбцами (Tests, Results, Date Completed).

Для столбца Test он будет предварительно заполнен на основе сценария SQL.Столбцы результатов - это пустые текстовые поля, которые пользователь должен будет ввести в Результат теста, а столбец даты совпадает со столбцом «Результаты», содержащим пустые текстовые поля, чтобы пользователь мог ввести дату завершения теста.Я хочу иметь возможность проверить столбец результатов, в настоящее время столбец даты, я использую календарь расширений, маскировщик правки и валидатор, и это работает просто отлично.Теперь для столбца результатов валидация будет отличаться в зависимости от теста, тест ABC может иметь результат только между 2-7, в то время как тест CBA может быть True / False и так далее.Я просто не знаю, как подходить к валидации каждого поля.Я надеюсь, что вы можете помочь мне.Спасибо.

<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>

1 Ответ

1 голос
/ 19 марта 2012

Добавление моего комментария в качестве ответа

Добавьте все требуемые валидаторы и включите / отключите их в RowDataBound в соответствии с «Test-value» (сохраняямой пример абстрактный как твой вопрос).

  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;
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...