我的ASP.NET网页上有一个嵌套的ListView,内部ListView有一个InsertItem模板,我必须验证用户条目并提供警告(使用RequiredValidator和RegExpValidator以及AJAX Extenders来添加标注) . 不幸的是,由于每个绑定项都会复制InsertTemplate,因此ValidationGroup对于每个独立的内部ListView保持相同,并且验证需要在页面上的所有ListView中的所有字段上输入,而不仅仅是从当前的InsertItem模板 .
知道如何将ValidationProperty设置为动态值吗?
这是我的ASP.NET页面代码的一个(一个纯化和煮沸的问题):
<asp:ListView ID="lstCatQualis" runat="server" ItemPlaceholderID="listQualiCats">
</LayoutTemplate>
<ItemTemplate>
</tr>
<asp:ListView ID="listQualiItems" ItemPlaceholderID="itemPlaceHolder" runat="server" DataSource='<%# Eval("Qualis") %>' InsertItemPosition="LastItem">
<InsertItemTemplate>
<tr id="quali" runat="server">
<td class="first">
</td>
<td class="qualirating">
<asp:TextBox ID="txtQualiName" runat="server" Width="250" TabIndex='1' />
<asp:RequiredFieldValidator ID="rv1" runat="server" ControlToValidate="txtQualiName"
Display="None" ErrorMessage="Bitte geben Sie Ihre Qualifikation ein."
ValidationGroup="quali"></asp:RequiredFieldValidator>
<asp:ValidatorCalloutExtender ID="vco19" runat="server" TargetControlID="rv1">
</asp:ValidatorCalloutExtender>
</td>
<td class="qualirating">
<asp:TextBox ID="txtJahreErfahrung" runat="server" TabIndex='1' />
<asp:RequiredFieldValidator ID="rv2" runat="server" ControlToValidate="txtJahreErfahrung"
Display="None" ErrorMessage="Bitte tragen Sie die Anzhal der Jahre ein."
ValidationGroup="quali"></asp:RequiredFieldValidator>
<asp:ValidatorCalloutExtender ID="vco2" runat="server" TargetControlID="rv2">
</asp:ValidatorCalloutExtender>
<asp:RegularExpressionValidator ID="ev2" runat="server" ErrorMessage="Geben Sie bitte eine Zahl ein."
Display="None" ControlToValidate="txtJahreErfahrung" ValidationExpression="[1-9][0-9]{0,3}"
ValidationGroup="quali"></asp:RegularExpressionValidator>
<asp:ValidatorCalloutExtender ID="vcoe2" runat="server" Enabled="True" TargetControlID="ev2">
</asp:ValidatorCalloutExtender>
</td>
<td class="qualilabel">
<asp:button ID="btnAddCatQuali" OnClick="btnAddCatQuali_Clicked" runat="server" text='Hinzufügen' TabIndex='1' ValidationGroup="quali" />
</td>
</tr>
</InsertItemTemplate>
</asp:ListView>
</ItemTemplate>
</asp:ListView>
1 回答
添加一个
ItemDataBound
事件处理程序并在其中,搜索每个验证程序并设置使用该项的id生成的ValidationGroup:使用递归函数,您可以扩展代码以查找Validator的每个子类 .