C# 如何基于页面控件启用禁用验证器?
我有一个gridView,如下所示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" /
<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" />