使用jQuery验证ASP.NET中的GridView

在本文中,将探讨如何使用jQueryASP.NET中的GridView控件进行验证。这涉及到在前端设置GridView、编写后端代码以及实现前端验证逻辑。将展示如何显示和编辑数据,以及如何对特定字段(如年龄和电子邮件)进行验证。

设置GridView

首先,在ASPX页面上,将设置GridView以显示以下字段:

  • 姓名 - 文本框
  • 年龄 - 文本框
  • 电子邮件 - 文本框(带jQueryDatePicker)
  • 出生日期 - 文本框
  • 性别 - 单选按钮列表

对于每个字段,将有一个TemplateField,它包含ItemTemplate(在Grid加载时显示)和EditItemTemplate(在Grid处于编辑模式时显示)。

<asp:GridView ID="gvTestValidations" runat="server" AutoGenerateColumns="false" OnRowEditing="gvTestValidations_RowEditing" OnRowUpdating="gvTestValidations_RowUpdating" OnRowCancelingEdit="gvTestValidations_RowCancelingEdit"> <Columns> <asp:TemplateField HeaderText="Name"> <ItemTemplate> <asp:Label ID="lblName" runat="server" Text='<%#Bind("Name") %>'></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:TextBox ID="txtName" runat="server" Text='<%#Bind("Name") %>'/> </EditItemTemplate> </asp:TemplateField> ... </Columns> </asp:GridView>

在ASPX.CS页面上,将创建一个DataTable属性,用于存储GridView的数据。将编辑和更新ViewState中的表,并将其绑定到GridView。在Page Load事件中,将声明硬编码的行并将它们添加到DataTable中。然后绑定到GridView。

protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("Name")); dt.Columns.Add(new DataColumn("Age")); dt.Columns.Add(new DataColumn("Email")); dt.Columns.Add(new DataColumn("DOB")); dt.Columns.Add(new DataColumn("Gender")); ... DataRow dr = dt.NewRow(); dr["Name"] = "Deepak Mahapatra"; dr["Age"] = 24; dr["Email"] = "abc@anything.com"; dr["DOB"] = "09/28/1990"; dr["Gender"] = "Male"; dt.Rows.Add(dr); ... dtGridData = dt; BindGrid(); } }

浏览器中的GridView

在浏览器中,GridView将在初始加载时显示数据。当点击编辑按钮时,第一行将进入编辑模式。接下来,将进行实际的验证。

对于年龄字段,只允许数字输入。对于电子邮件字段,将进行电子邮件验证。可以进行更多的验证,只需学习如何进行验证。

逻辑是,在document Ready事件中,将尝试找到GridView中所有的年龄TextBox和电子邮件TextBox,并分别处理keydown和change事件。

$("input[id*='txtAge']").each(function () { $(this).keydown(function (event) { $(this).val($(this).val().replace(/[^\d].+/, "")); var charCode = (event.which) ? event.which : event.keyCode; if (charCode > 31 && (charCode < 48 || charCode > 57)) { event.preventDefault(); } }); });

对于电子邮件TextBox,使用相同的逻辑,唯一的区别是在这里处理change事件而不是keydown事件。

$("input[id*='txtEmail']").each(function () { $(this).change(function (event) { if (!validateEmail($(this).val())) { alert("Email not in correct format."); $(this).addClass('errorClass'); event.preventDefault(); } else { $(this).removeClass('errorClass'); } }); });

注意:CSS类“errorClass”用于在验证失败时将电子邮件TextBox边框设置为红色。

还有一个有趣的事情...还限制用户在行未验证的情况下更新记录。假设用户输入了一个错误的电子邮件地址,然后直接点击更新按钮,那么它将不允许用户更新并显示一条消息。为此,使用变量isValidated,已经在代码中看到了。只是在更新按钮点击事件中检查isValidated的值,并根据该值采取行动。再次使用相同的逻辑,搜索所有链接并找到具有“更新”文本的按钮,并触发其click事件。

$("a").each(function () { if ($(this).text() == "Update") { $(this).click(function (event) { if (!isValidated) { alert("There are issues with input fields. Please correct and then try."); return false; } else { return true; } }); } });
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485