我有一个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>
和一个带有以下代码的保存按钮。
<asp:Button ID="btnLocationAmountList" runat="server" OnClick="btnLocationAmountList_Click" Text="Save" Width ="100px" />
绑定gridview后,其中大约有20行。 当我在第一行的文本框中输入数字并按Enter键转到第二个文本框时,将触发所有其他19行的必填字段验证器。
但是,如果我在第一个文本框中键入数字并在下一个文本框中单击鼠标,则不会触发RequiredFieldValidator。
只有点击保存按钮,才能验证页面。必须在保存之前为所有文本框输入值,并且所有值必须仅为整数。 (11,125,6589等)。 如何为特定控件启用禁用验证器?
更新:这是我的类文件中的page_load事件代码。
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();
}
答案 0 :(得分:1)
您需要处理每个onkeydown
中每个文本框中的ItemTemplate
,如下所示:
onkeydown =“return(event.keyCode!= 13);”
<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>
注意: Enter 键的
keyCode
值为13.
答案 1 :(得分:0)
您是否尝试使用验证组属性?
<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" />