0

さまざまなテキスト ボックス/ドロップダウン リストを動的に作成するプログラムがあります。これらのフィールドが変更された場合にのみこれらのフィールドを検証する方法を見つけようとしています。基本的に、誰かがテキスト ボックスに日付を入力した場合、ドロップダウン リストが変更されたこと、またはその逆を検証するプログラムが必要です。両方のフィールドに変更がない場合は、検証されません。どんな助けでも大歓迎です。コードは次のとおりです。

<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>

申し訳ありませんが、正しいコンテキストがないと、コードが少し混乱する可能性があります。

4

1 に答える 1

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");
    }
于 2013-08-29T21:57:19.403 に答える