更改一个时,验证动态创建的字段

时间:2013-08-28 20:23:24

标签: html asp.net validation requiredfieldvalidator

我有一个动态创建各种文本框/下拉列表的程序。我试图弄清楚如何更改这些字段时如何验证这些字段。基本上如果有人在文本框中输入了日期,那么我需要程序来验证下拉列表是否已更改,反之亦然。如果两个字段都没有更改,则不应进行验证。任何帮助将非常感激。这是代码:

<asp:TemplateField HeaderText="ValidatedDate" SortExpression="ValidatedDate">
    <EditItemTemplate>
        <asp:TextBox ID="txtValDate" Width="100px" MaxLength="10" runat="server" AutoPostBack="true"
            Text='<%# Bind("ValidatedDate","{0:MM/dd/yyyy}") %>'></asp:TextBox>
        <asp:RegularExpressionValidator ValidationGroup="g1" ID="RegularExpressionValidator10"
            runat="server" ControlToValidate="txtValDate" Display="None" ErrorMessage="Validated Date: ##/##/####"
            ValidationExpression="\d{1,2}/\d{1,2}/\d{4}"></asp:RegularExpressionValidator>
    </EditItemTemplate>
    <ItemTemplate>
        <asp:Label ID="lblValidatedDate" runat="server" Text='<%# Bind("ValidatedDate","{0:MM/dd/yyyy}")%>'></asp:Label>
    </ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ProductStatus" SortExpression="ProductStatusDescription">
    <EditItemTemplate>
        <asp:DropDownList ID="DropDownList4" runat="server" DataSourceID="SqlDataSource6" AutoPostBack="true"
            DataTextField="StatusDescription" DataValueField="StatusID" SelectedValue='<%# Bind("Status") %>'>
        </asp:DropDownList>
    </EditItemTemplate>
    <ItemTemplate>
        <asp:Label ID="lblProductStatus" runat="server" Text='<%# Bind("ProductStatusDescription")%>'></asp:Label>
    </ItemTemplate>
</asp:TemplateField>

我很抱歉,没有正确的上下文,代码可能会有点混乱。

1 个答案:

答案 0 :(得分:0)

ebyrob,谢谢你的帮助。我想出来然而它工作得很漂亮。以下是解决所有问题的代码:

    protected void AddError(string errorMessage)
    {
        cstValidate.IsValid = false;
        cstValidate.ErrorMessage = errorMessage;
        cstValidate.EnableClientScript = false;
    }

    protected void GridView2_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        TextBox txtValidatedDate = GridView2.Rows[e.RowIndex].FindControl("txtValDate") as TextBox;
        DropDownList ddlStatusCompare = GridView2.Rows[e.RowIndex].FindControl("dropdownlist4") as DropDownList;
        if (txtValidatedDate.Text == string.Empty && ddlStatusCompare.SelectedValue == "1")
        {
            AddError("Please enter a Validated Date");
            e.Cancel = true;
        }
        else if (txtValidatedDate.Text != string.Empty && ddlStatusCompare.SelectedValue == "0" 
            || txtValidatedDate.Text != string.Empty && ddlStatusCompare.SelectedValue == "99")
        {
            AddError("Please remove the Validated Date");
            e.Cancel = true;
        }
        if (!e.Cancel)
            Helpers.LogChanges(GridView2, e, _employeeID, "SaleProducts");
    }