asp .NET 用Ajax技术实现文本框提示功能---huangkai的博客

asp <wbr>.NET <wbr>用Ajax技术实现文本框提示功能

该实例是我现在所作项目中的一个小功能点,项目由MVC三层框架实现

该功能点主要是由Ajax技术实现

调用逻辑 .asp-->.asp.cs-->BLL-->DAL

--------------------------------------------------------------------------------------------------

第一部分页面project_test.asp的代码:

<%@ Page Language="C#" MasterPageFile="~/Main.Master" CodeBehind="project_test.aspx.cs" Inherits="WebFSIS.project_test" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
 <asp:Content ID="Content2" runat="server"
    contentplaceholderid="ContentPlaceHolder1">
     <script language="javascript" type="text/javascript">
      <!--
    var searchReq = createReq();
   
    //创建XMLHttpRequest的第二种方法
    function createReq() {
        var httpReq;

        if (window.XMLHttpRequest) {
            httpReq = new XMLHttpRequest();
            if (httpReq.overrideMimeType) {
                httpReq.overrideMimeType('text/xml');
            }
        }
        else if (window.ActiveXObject) {
            try {
                httpReq = new ActiveXObject('Msxml2.XMLHTTP');
            }
            catch (e) {
                try {
                    httpReq = new ActiveXObject('Microsoft.XMLHTTP');
                }
                catch (e) {
                }
            }
        }
        return httpReq;
    }
    //发送HTTP请求,当输入框的内容变化时,会调用该函数
    function searchSuggest() {
        var str = escape(document.getElementByIdx_x_x_x_x_x("txtSearch").value);
        if (Trim(str) != "") {
            searchReq.open("get", "project_test.aspx?searchText=" + str, true);
            searchReq.onreadystatechange = handleSearchSuggest;
            searchReq.send(null);
        } else {
            tbblur();
        }
    }

    //当 onreadystatechange 值变化时,会调用该函数
    //注意 searchSuggest()中的这一句searchReq.onreadystatechange = handleSearchSuggest;
    function handleSearchSuggest() {
        if (searchReq.readyState == 4) {
            if (searchReq.status == 200) {
                var suggestText = document.getElementByIdx_x_x_x_x_x("search_suggest");
                var sourceText = searchReq.responseText.split("\n");
                if (sourceText.length > 1) {
                    suggestText.style.display = "";
                    suggestText.innerHTML = "";
                    for (var i = 0; i < sourceText.length - 1; i++) {
                        var s = '<div onmouseover="javascript:suggestOver(this);"';
                        s += ' onmouseout="javascript:suggestOut(this);" ';
                        s += ' onclick="javascript:setSearch(this.innerHTML);" ';
                        s += ' class="suggest_link">' + sourceText[i] + '</div>';
                        suggestText.innerHTML += s;
                    }

                }
                else {
                    suggestText.style.display = "none";
                }
            }
        }
    }

    function suggestOver(div_value) {
        div_value.className = "suggest_link_over";
    }

    function suggestOut(div_value) {
        div_value.className = "suggest_link";
    }

    function setSearch(obj) {
        document.getElementByIdx_x_x_x_x_x("txtSearch").value = obj;
        var div = document.getElementByIdx_x_x_x_x_x("search_suggest");
        div.innerHTML = "";
        div.style.display = "none";

        var id = document.getElementByIdx_x_x_x_x_x("txtSearch").value;
        FirstTest(id);
    }

    function tbblur() {
        var div = document.getElementByIdx_x_x_x_x_x("search_suggest");
        //div.innerHTML = "";
        div.style.display = "none";
    }
    function Trim(str) {
        return str.replace(/^\s*|\s*$/g, "");
    }

    function FirstTest(strid) {
        var id = strid;
        if (Trim(id)!="") {
           
        }
    }


    //-->
    </script>

    <style type="text/css" media="screen">
        body
        {
            font: 11pxarial;
        }
        .suggest_link
        {
            background-color: #FFFFFF;
            padding: 2px6px2px6px;
            border:1 solid black;
        }
        .suggest_link_over
        {
            background-color: #E8F2FE;
            padding: 2px6px2px6px;
        }
        #search_suggest
        {
            position: absolute;
            background-color: #FFFFFF;
            text-align: left;
            width:130px;
            top: 219px;
            left: 607px;
        }
    </style>

    <div style="width: 500px;">
       <table align="left">
          <tr>
            <td >
              <form id="frm" action="">
                <asp:Label ID="LabeltxtSearch" runat="server" Text="编号"></asp:Label>
                <input type="text" name="txtSearch" id="txtSearch" onkeyup="searchSuggest();" />
                <br />
                <div id="search_suggest" style="display:none" >
                </div>
               </form>
            </td>
          </tr>
         
        </table>
       
    </div>
 </asp:Content>

-------------------------------------------------------------------------------------------------
第二部分 project_test.asp.cs代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebFSIS
{
    public partial class project_test : System.Web.UI.Page
    {
        BLL.ProjectDetection bll = new BLL.ProjectDetection();
        Model.ProjectDetection model = new Model.ProjectDetection();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.QueryString["searchText"] != null)
            {
                if (Request.QueryString["searchText"].ToString().Trim().Length > 0)
                {
                   
                    string name= Request.QueryString["searchText"].ToString().Trim();
                    Response.Clear();
                    Response.Write(bll.GetNames(name));
                    Response.Flush();
                    Response.End();
 
                }
            }
        }
    }
}

--------------------------------------------------------------------------------------------------

第三部分 BLL层代码:

public string GetNames(string name) {
            return dal.GetNames(name);
}

--------------------------------------------------------------------------------------------------

第四部分 DAL层代码:

public string GetNames(string ProjectName)
        {

            StringBuilder strSql = new StringBuilder();
            strSql.Append("SELECT  TOP(10) detectionName FROM  DetectionItems");
            strSql.Append(" where detectionName  like '" + ProjectName + "%'");
            DataSet ds = DbHelperSQL.Query(strSql.ToString());
            string returnText = "";
            if (ds.Tables[0].Rows.Count > 0)
            {

                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    returnText += ds.Tables[0].Rows[i]["detectionName"].ToString() + "\n";
                }

                return returnText;
            }
            else
            {
                return null;
            }
        }

 

posted @ 2014-09-28 10:30  周小杰  阅读(219)  评论(0编辑  收藏  举报