[英]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.