C# 在特定行的gridview中启用所需的字段验证器?

C# 在特定行的gridview中启用所需的字段验证器?,c#,asp.net,gridview,C#,Asp.net,Gridview,我已经实现了网格视图,代码行如下 <div class="overflowX"> <asp:GridView ID="grdView" AutoGenerateColumns="false" BorderWidth="0" OnRowCommand="grdView_RowCommand" runat="server" CssClass="table"> <Columns> <asp:TemplateFi

我已经实现了网格视图,代码行如下

<div  class="overflowX">
    <asp:GridView ID="grdView" AutoGenerateColumns="false" BorderWidth="0" OnRowCommand="grdView_RowCommand" runat="server" CssClass="table">
        <Columns>
            <asp:TemplateField HeaderText="Save It">
                <ItemTemplate>
                    <asp:CheckBox ID="chkbox" runat="server" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Expiration Date">
                <ItemTemplate>
                    <asp:TextBox ID="txtExpirationDate" style="padding:12px 5px;" placeholder="(mm/dd/yyyy)" CssClass="datepiker" runat="server"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="ValReqExpD" Enabled="false" Display="Dynamic" runat="server" ErrorMessage="Expiry Date cannot be Blank." ControlToValidate="txtExpirationDate"></asp:RequiredFieldValidator>
                    <asp:RegularExpressionValidator Display="Dynamic" ID="ValRegExpD" runat="server" ControlToValidate="txtExpirationDate" ErrorMessage="Enter a valid Expiry Date ." ValidationExpression="([1-9]|0[1-9]|1[012])([-/.])([1-9]|0[1-9]|[12][0-9]|3[01])([-/.])(19[5-9][0-9]|20[0-4][0-9])">
                        <b>Enter a valid Renewal Date</b>
                    </asp:RegularExpressionValidator><br />
                    <asp:CompareValidator ID="ValCmpSD" Display="Dynamic" runat="server" ControlToCompare="txtEffectiveDate" ControlToValidate="txtExpirationDate" ErrorMessage="Expiry Date should be greater than Effective date" Operator="GreaterThan" Type="Date"></asp:CompareValidator>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
</div>
我已经尝试了上面的代码,但它不工作

请帮帮我

  • 首先,您需要在复选框中添加服务器事件控制更改事件触发
  • 然后触发您需要启用/禁用RequiredFieldValidator服务器控件的复选框的选中事件
  • 首先,您需要在复选框中添加服务器事件控制更改事件触发
  • 然后触发您需要启用/禁用RequiredFieldValidator服务器控件的复选框的选中事件

  • 当前代码的问题是,当引发任何事件(如按钮单击等)时,gridView的
    RowCommand
    事件将被引发,但由于复选框控件未执行任何操作,因此此事件不会触发任何事件

    您可以使用
    复选框
    控件附加
    CheckChanged
    事件,并启用如下自动回写:-

    <asp:CheckBox ID="chkbox" runat="server" OnCheckedChanged="chkbox_CheckedChanged" 
         AutoPostBack="true"/>
    
    protected void chkbox_CheckedChanged(object sender, EventArgs e)
    {
       CheckBox chkbox= sender as CheckBox;
       GridViewRow currentRow = chkbox.NamingContainer as GridViewRow;
       RequiredFieldValidator rfv = grdCustomer.Rows[currentRow.RowIndex]
                                          .FindControl("ValReqED") as RequiredFieldValidator;
       if (chkCustomer.Checked)
       {
          rfv .Enabled = true;
       }
    }
    

    当前代码的问题是,当引发任何事件(如按钮单击等)时,gridView的
    RowCommand
    事件将被引发,但由于复选框控件未执行任何操作,因此此事件不会触发任何事件

    您可以使用
    复选框
    控件附加
    CheckChanged
    事件,并启用如下自动回写:-

    <asp:CheckBox ID="chkbox" runat="server" OnCheckedChanged="chkbox_CheckedChanged" 
         AutoPostBack="true"/>
    
    protected void chkbox_CheckedChanged(object sender, EventArgs e)
    {
       CheckBox chkbox= sender as CheckBox;
       GridViewRow currentRow = chkbox.NamingContainer as GridViewRow;
       RequiredFieldValidator rfv = grdCustomer.Rows[currentRow.RowIndex]
                                          .FindControl("ValReqED") as RequiredFieldValidator;
       if (chkCustomer.Checked)
       {
          rfv .Enabled = true;
       }
    }