C# 如何基于页面控件启用禁用验证器?

C# 如何基于页面控件启用禁用验证器?,c#,asp.net,validation,gridview,C#,Asp.net,Validation,Gridview,我有一个gridView,如下所示 <asp:GridView ID="grvLocationCash" runat="server" AutoGenerateColumns="false" CssClass="gridtable" DataKeyNames="LocationId"> <Columns> <asp:BoundField HeaderText="Location Name" DataField="LocationName" /

我有一个gridView,如下所示

<asp:GridView ID="grvLocationCash" runat="server" AutoGenerateColumns="false" CssClass="gridtable" DataKeyNames="LocationId">
    <Columns>
        <asp:BoundField HeaderText="Location Name" DataField="LocationName" />
        <asp:TemplateField HeaderText="Amount">
            <ItemTemplate>
                <asp:TextBox ID="txtAmount" runat="server" CssClass="txtbox" Visible="true"></asp:TextBox>
                <asp:RequiredFieldValidator ID="rfvAmount" runat="server" ControlToValidate="txtAmount" ErrorMessage="Please enter the Amount" Display="Dynamic" SetFocusOnError="true"></asp:RequiredFieldValidator>
                <asp:RegularExpressionValidator ID="rgvAmount" runat="server" ControlToValidate="txtAmount" ValidationExpression="^\d+$" ErrorMessage="Please enter whole numbers only" Display="Dynamic" SetFocusOnError="true"></asp:RegularExpressionValidator>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

您需要在每个
ItemTemplate
的每个文本框中处理
onkeydown
,如下所示:

onkeydown=“return(event.keyCode!=13);”


注意:回车键的
keyCode
值为13


是否尝试使用验证组属性

<asp:GridView ID="grvLocationCash" runat="server" AutoGenerateColumns="false" CssClass="gridtable" DataKeyNames="LocationId">
    <Columns>
        <asp:BoundField HeaderText="Location Name" DataField="LocationName" />
        <asp:TemplateField HeaderText="Amount">
            <ItemTemplate>
                <asp:TextBox ID="txtAmount" runat="server" CssClass="txtbox" Visible="true"></asp:TextBox>
                <asp:RequiredFieldValidator ID="rfvAmount" runat="server" ControlToValidate="txtAmount" ErrorMessage="Please enter the Amount" Display="Dynamic" SetFocusOnError="true" ValidationGroup="save"></asp:RequiredFieldValidator>
                <asp:RegularExpressionValidator ID="rgvAmount" runat="server" ControlToValidate="txtAmount" ValidationExpression="^\d+$" ErrorMessage="Please enter whole numbers only" Display="Dynamic" SetFocusOnError="true" ValidationGroup="save"></asp:RegularExpressionValidator>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>


<asp:Button ID="btnLocationAmountList" runat="server" OnClick="btnLocationAmountList_Click" Text="Save" Width ="100px" ValidationGroup="save" />


“按Enter键转到第二个文本框”
Webforms!=winforms
。如果按enter键,默认情况下该页面已提交。恐怕不是@TimSchmelter。如果是回发问题,我的页面加载函数也不会被命中。请查看我更新的问题@Timschmelter验证程序事件没有触发。然而,它也没有进入下一个文本框。有没有办法转到下一个文本框?@Mahe-请参阅已接受的答案。它不起作用。在第一个文本框中按enter键本身会触发页面提交,我不希望发生这种情况。我需要enter键来执行tab键的类似功能(切换到下一个文本框)。为什么要按enter键移动到下一个文本框,需要使用jquery更改enter键的功能。
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                BindGrid();
            }
        }


        protected void BindGrid()
        {
            FinanceServiceRef.FinanceServiceClient obj = new FinanceServiceRef.FinanceServiceClient("WSHttpBinding_IFinanceService");
            var ds = obj.ViewLocationAmountCashManagement();
            grvLocationCash.DataSource = ds;
            grvLocationCash.DataBind();
        }
<asp:TemplateField HeaderText="Amount">
    <ItemTemplate>
        <asp:TextBox ID="txtAmount" runat="server" CssClass="txtbox" 
                     Visible="true"
                     onkeydown = "return (event.keyCode != 13);">
        </asp:TextBox>
    </ItemTemplate>
</asp:TemplateField>
<asp:GridView ID="grvLocationCash" runat="server" AutoGenerateColumns="false" CssClass="gridtable" DataKeyNames="LocationId">
    <Columns>
        <asp:BoundField HeaderText="Location Name" DataField="LocationName" />
        <asp:TemplateField HeaderText="Amount">
            <ItemTemplate>
                <asp:TextBox ID="txtAmount" runat="server" CssClass="txtbox" Visible="true"></asp:TextBox>
                <asp:RequiredFieldValidator ID="rfvAmount" runat="server" ControlToValidate="txtAmount" ErrorMessage="Please enter the Amount" Display="Dynamic" SetFocusOnError="true" ValidationGroup="save"></asp:RequiredFieldValidator>
                <asp:RegularExpressionValidator ID="rgvAmount" runat="server" ControlToValidate="txtAmount" ValidationExpression="^\d+$" ErrorMessage="Please enter whole numbers only" Display="Dynamic" SetFocusOnError="true" ValidationGroup="save"></asp:RegularExpressionValidator>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>


<asp:Button ID="btnLocationAmountList" runat="server" OnClick="btnLocationAmountList_Click" Text="Save" Width ="100px" ValidationGroup="save" />