当前位置:编程学习 > C#/ASP.NET >>

求各位大神帮助!!

 <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
                </asp:ScriptManager>
    <div>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
       <ContentTemplate>
                <asp:Label ID="Label1" runat="server" Text="昵称:"></asp:Label>
                
                
                
                <asp:TextBox ID="TextBox1" runat="server" 
                    Width="166px" ontextchanged="TextBox1_TextChanged" AutoPostBack="True"></asp:TextBox>
                <asp:CustomValidator ID="cv" runat="server" ControlToValidate="TextBox1" 
                    ErrorMessage="昵称已存在,换个试试!" ForeColor="#FF3300" 
                    onservervalidate="cv_ServerValidate"></asp:CustomValidator>
                
                </ContentTemplate>
          <Triggers>
              <asp:AsyncPostBackTrigger ControlID="TextBox1" EventName="TextChanged" />
        </Triggers>
          </asp:UpdatePanel>
    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="提交" />
    </div>
    </form>
我想让他自动检测昵称在数据库中 是否已存在?该怎么办?
这是 代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;

public partial class CustomValidator : System.Web.UI.Page
{
    string conStr = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void TextBox1_TextChanged(object sender, EventArgs e)
    {
        if (TextBox1.Text!="")
        {
            cv.Enabled = true;
            cv.Visible = true;
        }
    }
    protected void cv_ServerValidate(object source, ServerValidateEventArgs args)
    {
        string name = TextBox1.Text;
        using (SqlConnection con=new SqlConnection(conStr))
        {
            SqlCommand com = new SqlCommand();
            com.Connection = con;
            com.CommandText = "select * from Name where Name='"+name+"'";
            con.Open();
            int result = com.ExecuteNonQuery();
            if (result>0)
            {
                args.IsValid = true;
            }
            else
            {
                args.IsValid = false;
            }
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        string name = TextBox1.Text;
        using (SqlConnection  con=new SqlConnection(conStr))
        {
            SqlCommand com = new SqlCommand();
            com.Connection = con;
            com.CommandText = "insert into Name(Name) values('"+name+"')";
            con.Open();
            int result = com.ExecuteNonQuery();
            if (result>0)
            {
                Response.Write("<script>window.alert('加入成功!')</script>");
            }
            con.Close();
        }
    }
}
我就是不能自动检测  一定要单机按钮之后 customvalidator 才会显示是否已存在!  --------------------编程问答-------------------- 我想让他自动检测昵称在数据库中 是否已存在?该怎么办?


使用Ajax,在onblur的时候发出ajax请求,去数据库中查询并返回结果给前台。 --------------------编程问答-------------------- 使用Ajax,在onblur的时候发出ajax请求,去数据库中查询并返回结果给前台。


能具体给个代码吗? 我用的是customvalidator 用户自定义控件 而且全部采用 asp控件 而不是input控件的怎么onblur? 好像只有TextChanged事件吧!! --------------------编程问答--------------------
引用 1 楼 yaotomo 的回复:
我想让他自动检测昵称在数据库中 是否已存在?该怎么办?


使用Ajax,在onblur的时候发出ajax请求,去数据库中查询并返回结果给前台。

能具体给个代码吗? 我用的是customvalidator 用户自定义控件 而且全部采用 asp控件 而不是input控件的怎么onblur? 好像只有TextChanged事件吧!! --------------------编程问答-------------------- 服务端控件也可以onblur的,渲染到客户端也是input标签
TextChanged每敲一个字就要查一遍数据库,如果不觉得数据库压力大用他也行。

代码很简单的。后台ashx就是查询数据库。前台通过js将参数传给指定的ashx。 --------------------编程问答-------------------- 很明显用Ajax啊,在无刷新页面的情况下,Ajax相当于单开一个小的浏览器,然后向服务器发送请求并接收,你的情况只要监听一下文本框失去焦点的事件就可以啊,如果不懂Ajax就好好看一下,很简单,就是javascript和HTML等的结合,不是什么新技术。
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,