簡體   English   中英

單個字段上的RequiredFieldValidator

[英]RequiredFieldValidator on individual Field

我有一個中繼器,僅在某些字段上需要驗證器。 例如,對於每個字段,我都有一組文本框,但是我只希望按要求輸入諸如名字/姓氏之類的字段,而不必使用出生日期。 我已經嘗試了以下方法:

protected void repCustomerDetails_DataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        TextBox tct = e.Item.FindControl("tbColumns") as TextBox;
        Label lbl = e.Item.FindControl("Label1") as Label;

        RequiredFieldValidator rfv = (RequiredFieldValidator)e.Item.FindControl("rfvColumns");

        if (lbl.Text != "DOB")
        {
            rfv.ControlToValidate = tct.ID;
        }

    }
}

但這並不是很有效,因為由於共享ID標簽,這會驗證每個文本框。

        <asp:Repeater ID="repCustomerDetail" runat="server" onitemdatabound="repCustomerDetails_DataBound">
            <HeaderTemplate>
                <table>
            </HeaderTemplate>
            <ItemTemplate>
                <tr>
                    <td>
                        <asp:Label ID="Label1" runat="server" Text='<%# DataBinder.Eval(((RepeaterItem)Container).DataItem, "FieldName")%>' Width="140px"></asp:Label>
                        <asp:TextBox ID="tbColumns" runat="server" Width="160px" Visible='<%# (((bool)DataBinder.Eval(Container.DataItem, "IsDropDown") == false &&  (string)DataBinder.Eval(Container.DataItem, "Type") != "Boolean") ? true : false )%> '></asp:TextBox>
                        <asp:DropDownList ID="ddlField" runat="server" Width="165px" Visible='<%# ((bool)DataBinder.Eval(Container.DataItem, "IsDropDown") == true ? true : false )%> '></asp:DropDownList>
                        <asp:CheckBox ID="cbField" runat="server" Visible='<%# (((bool)DataBinder.Eval(Container.DataItem, "IsDropDown") == false &&  (string)DataBinder.Eval(Container.DataItem, "Type") == "Boolean")? true : false )%> ' />
                        <asp:ImageButton ID="imgbtnCalendar" runat="server" ImageUrl="~/WebResources/Images/calendar.gif" Visible='<%# ((string)DataBinder.Eval(Container.DataItem, "Type") == "DateTime" ? true : false )%> ' />
                        <asp:RequiredFieldValidator ID="rfvColumns" runat="server" ControlToValidate="tbColumns" ErrorMessage="* Required" ValidationGroup="Save">*</asp:RequiredFieldValidator>
                        <ajaxToolkit:CalendarExtender ID="CalendarExtendeeer" runat="server" Format="dd/MM/yyyy" PopupButtonID="imgbtnCalendar" TargetControlID="tbColumns" Enabled='<%# ((string)DataBinder.Eval(Container.DataItem, "Type") == "DateTime" ? true : false )%> '></ajaxToolkit:CalendarExtender>
                        <br id="Br1" runat="server" visible="<%# Container.ItemIndex == 3 %>" />
                    </td>
                </tr>
            </ItemTemplate>
            <FooterTemplate>
                </table>
            </FooterTemplate>
        </asp:Repeater>

嘗試為“出生日期”字段禁用RequiredFieldValidator

RequiredFieldValidator rfv = (RequiredFieldValidator)e.Item.FindControl("rfvColumns");

rfv.Enabled = lbl.Text != "DOB";

如果需要使其動態,則可以在DataSource上具有“ Required”屬性,然后可以使用它來處理RequiredFieldValidator啟用。

例:

<asp:RequiredFieldValidator ID="rfvColumns" Enabled='<%# Eval("Required") %>' runat="server" ControlToValidate="tbColumns" ErrorMessage="* Required" ValidationGroup="Save" >*</asp:RequiredFieldValidator>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM