文本框验证ASP.net中的事件

时间:2014-06-13 12:58:22

标签: c# asp.net sql-server

我是asp.net的新手。我正在创建一个简单的鞋店计费管理系统。我想知道如何激活文本框验证事件。就像我们在Windows应用程序文本框中验证事件一样。我的鞋子里丢了鞋子。表ShoseCode和ShoseDesc中有两列。当我在txt_ShoseCode中输入ShoseCode并且ShoseCode列中已存在此ShoseCode时。所以这个txt_ShoseCode从数据库中检索信息。或者,如果这个无法检索,那么只显示“This Shoes Code already exists”之类的消息或类似的内容。

我正在使用asp:Panel(ModalPopupExtender)。因为AutoPostBack =" True"在txt_ShoseCode中,当我触发txt_ShoseCode_TextChanged事件时,在txt_ShoseCode中删除该值。而且我也不知道如何使用javascript或jquery。

先谢谢

'

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Untitled Page</title>
    <script type="text/javascript">
        function Display(ShoseCode) {
            alert(ShoseCode + ':::ShoseCode');
            if (alert) {
                window.location = 'WebForm1.aspx';
            }
        }
</script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
        <br />
    <asp:Label ID="Labelcheck"  
            Text="Please enter any ShoseCode to be verified from the database" 
            runat="server" BackColor="#FFFF99" 
        Width="197px" ForeColor="#FF3300"></asp:Label>
        <asp:TextBox ID="txt_ShoseCode" runat="server" Width="197px" 
            AutoPostBack="True" ontextchanged="txt_ShoseCode_TextChanged"></asp:TextBox>

    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
        ControlToValidate="txt_ShoseCode" ErrorMessage="*ShoseCode Required"></asp:RequiredFieldValidator>

    <br />
    <asp:Timer ID="Timer1" runat="server"  Interval="10000" ontick="Timer1_Tick">
               </asp:Timer>
                 <asp:Label ID="lblMessage" runat="server" BackColor="#FF3300" 
        ForeColor="Black"></asp:Label>
        <asp:Label ID="Label1" runat="server" Text="Label" Visible="False"></asp:Label>
    </div>
    </form>
</body>
</html>

&#39;

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

namespace WebApplication1
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        string connStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        SqlCommand com;
        string str;

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        public void ShoseCode_check()
        {
            SqlConnection con = new SqlConnection(connStr);
            con.Open();
            str = "select count(*)from tblShoes where ShoesCode ='" + txt_ShoseCode.Text + "'";
            com = new SqlCommand(str, con);
            int count = Convert.ToInt32(com.ExecuteScalar());
            if (count > 0)
            {

                ScriptManager.RegisterStartupScript(this, this.GetType(), "ShowSuccess", "javascript:Display('" + txt_ShoseCode.Text + "')", true);
                lblMessage.Text = "This Shoes Code already exist";
            }
            else
            {

                ScriptManager.RegisterStartupScript(this, this.GetType(), "ShowSuccess", "javascript:Display('" + txt_ShoseCode.Text + "')", true);
                lblMessage.Text = "This Shoes Code does not exist";
            }

        }

        protected void txt_ShoseCode_TextChanged(object sender, EventArgs e)
        {
            ShoseCode_check();
        }

        protected void Timer1_Tick(object sender, EventArgs e)
        {
            Label1.Text = DateTime.Now.ToString();
        }
    }
}

2 个答案:

答案 0 :(得分:1)

您可以使用onblur使用jQuery事件的文本框。

答案 1 :(得分:0)

正如我在你的另一个问题中所说,有人在这里也提到你可以使用 jQuery

因此,从文本框中删除事件 - ontextchanged =“txt_ShoseCode_TextChanged” AutoPostBack =“True” 。所以现在它看起来像这样 -

<asp:TextBox ID="txt_ShoseCode" runat="server" Width="197px"></asp:TextBox>

现在正如你在问题中所说的那样 -

  

当我在txt_ShoseCode中输入ShoseCode并且此ShoseCode是   已存在于ShoseCode列中。所以这个txt_ShoseCode检索   数据库中的信息。或者,如果这不能检索所以只是显示   像“This Shoes Code已经存在”之类的消息或类似的东西。

要实现此功能,您可以将Jquery与“blur”事件一起使用,如下所示。

首先将模糊事件附加到文本框中。

$(document).ready(function () {
     $('#<%=txt_ShoseCode.ClientID %>').blur(ShowAvailability);
});

这里 ShowAvailability()是一个javascript函数,它使用页面方法和jquery ajax调用服务器端方法 -

function ShowAvailability() {    
    $('#<%=Label1.ClientID %>').removeAttr("style");
    $('#<%=Label1.ClientID %>').html('Please wait...');

    $.ajax({
        type: "POST",
        url: "WebForm1.aspx/CheckShoseCodeAvailability",
        data: "{'shoseCode':'" + $('#<%=txt_ShoseCode.ClientID %>').val() + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            $('#<%=Label1.ClientID %>').html('');
            switch (response.d) {
                case "1":
                    $('#<%=Label1.ClientID %>').html('This Shoes Code does not exist');
                case "2":
                    $('#<%=Label1.ClientID %>').html('This Shoes Code already exist');
        },
        error: function () {
              alert("An error has occurred during processing your request.");
         }
    }); 
}

这是页面方法 - CheckShoseCodeAvailability()

[WebMethod()]
 public static string CheckShoseCodeAvailability(string shoseCode)
 {
            string availStatus = string.Empty;
            SqlConnection con = new SqlConnection(connStr);
            con.Open();
            str = "select count(*) from tblShoes where ShoesCode ='" + shoseCode + "'";
            com = new SqlCommand(str, con);
            int count = Convert.ToInt32(com.ExecuteScalar());
            con.Close();
            if (count > 0)
                 availStatus = "2";
            else
               availStatus = "1";

            return availStatus;
  }

我没有经过任何测试就把代码放了。所以首先要验证你的结果。而已。希望你现在明白了

注意: 您似乎是桌面应用程序开发人员。但是,让我告诉你一件事 - Stackoverflow网站不是为开发人员提供勺子。首先,你必须尝试自己,谷歌搜索它仍然如果你不知道然后然后在这里发布你的疑问。在这个问题中你得到-2票,因为没有任何尝试你直接发布问题。有很多网站和博客可供学习asp.net和jquery。希望你现在得到我想说的话......