我只需要一些关于如何验证GridView列的建议。
我目前拥有的是一个包含三列的GridView(测试,结果,完成日期)。
对于Test列,它将根据SQL Script预先填充。结果列是空文本框,用户必须输入测试结果,日期列与包含空文本框的结果列相同,以便用户输入测试完成日期。我希望能够验证结果列,当前日期列我使用日历扩展程序,屏蔽编辑扩展程序和验证程序,这是正常工作。现在对于结果列,验证将根据测试而不同,测试ABC的结果仅在2-7之间,而测试CBA可以是真/假等等。我只是不知道如何验证每个字段。我希望你能帮助我。感谢。
<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 :(得分: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;
}
}