效果图

前台

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="AutocompleteNew.ascx.cs" Inherits="Uni2Uni.ERP.Web.Main.UI.SCMWM.UserControl.AutocompleteNew" %>
<style type="text/css">
.gray {
color: gray;
}
.ac_results {
background: #fff;
border: 1px solid #7f9db9;
position: absolute;
z-index: 10000;
display:none;
}
.ac_results ul {
margin:3px 0px;
padding: 0px;
list-style: none;
font-size:12px;
}
.ac_results ul li {
color:#05a;
padding: 0px 4px;
line-height:21px;
}
.ac_results ul li:hover {
/*//background-color:#c8e3fc;*/
color:#861717;
cursor:pointer;
}
.ac_result_tip {
border-bottom: 1px dashed #666;
padding: 4px;
font-size:12px;
}
</style>
<script src="http://erp.uni2uni.com/Scripts/jquery-1.6.2.min.js" type="text/javascript"></script>
<script type="text/javascript"> //查询结果条数
var resultCount = 0;
//选中的行
var selectIndex = 0; //请求
function AjaxRequest(input, e) {
var url = "Ajax/PageHandler/AutocompleteUC.ashx";
var val = $(input).val().toString().trim();
var type = $("#" + $(input).attr("type-key")).val();
//无数据
$("#" + $(input).attr("msg-key")).text(val + ",按拼音排序。");
//有输入才去查找
if ((val != "" && e == null)||(val != "" && /8$|37$|38$|39$|40$|13$/.test(e.keyCode) == false)) {
$.getJSON(url, { type: type, parameter: val, rid: Math.random() }, function (data) {
resultCount = data.length;
$("#suggest<%=this.ClientID %>").css("display", "block");
//清空显示面板
$("#" + $(input).attr("detail-key")).empty();
if (resultCount > 0) {
//有数据
//循环添加查找出来的项
$.each(data, function (i) {
if (i == 0) {
selectIndex = 0;
$("#" + $(input).attr("detail-key")).append("<li onclick='Select();' id='" + data[i].value + "' index-key='" + i + "' onmouseover='LiHover(this);' style='background-color:#c8e3fc;'>" + data[i].display + "</li>");
} else {
$("#" + $(input).attr("detail-key")).append("<li onclick='Select();' id='" + data[i].value + "' index-key='" + i + "' onmouseover='LiHover(this);'>" + data[i].display + "</li>");
}
});
}
else {
//无数据
$("#" + $(input).attr("msg-key")).text("对不起,找不到:" + val);
resultCount = 0;
}
});
}
} //li浮动的时候
function LiHover(li)
{
$(li).parent().children().css("background-color", "");
$(li).css("background-color", "#c8e3fc");
selectIndex = $(li).attr("index-key");
} //键盘上下选择
window.onkeydown= function(e)
{
if (resultCount <= 0)
{
return;
}
switch (e.keyCode)
{
//上
case 38:
Up();
break;
//下
case 40:
Down();
break;
//确定选择
case 13:
Select();
break;
}
} function Up()
{
$($("#" + $("#<%=this.ClientID %>_arrcity").attr("detail-key")).children().get(selectIndex)).css("background-color", "");
selectIndex--;
if (selectIndex < 0)
{
selectIndex = resultCount-1;
}
$($("#" + $("#<%=this.ClientID %>_arrcity").attr("detail-key")).children().get(selectIndex)).css("background-color", "#c8e3fc");
}
function Down() {
$($("#" + $("#<%=this.ClientID %>_arrcity").attr("detail-key")).children().get(selectIndex)).css("background-color", "");
selectIndex++;
if (selectIndex == resultCount) {
selectIndex = 0;
}
$($("#" + $("#<%=this.ClientID %>_arrcity").attr("detail-key")).children().get(selectIndex)).css("background-color", "#c8e3fc");
}
function Select()
{
var value = $($("#" + $("#<%=this.ClientID %>_arrcity").attr("detail-key")).children().get(selectIndex)).attr("id");
var display = $($("#" + $("#<%=this.ClientID %>_arrcity").attr("detail-key")).children().get(selectIndex)).text();
$("#<%=this.ClientID %>_hdDisplayName").val(display);
$("#<%=this.ClientID %>_hdValueName").val(value);
$("#<%=this.ClientID %>_arrcity").val(display);
$("#" + $("#<%=this.ClientID %>_arrcity").attr("msg-key")).text(display + ",按拼音排序。");
$("#suggest<%=this.ClientID %>").css("display","none");
} function InputBlur(input)
{
$("#suggest<%=this.ClientID %>").css("display", "none");
} function InputFocus(input)
{
AjaxRequest(input, null);
}
</script> <asp:TextBox ID="arrcity" ClientIDMode="AutoID" runat="server" name="arrcity" autocomplete="off" Style="color: rgb(0, 0, 0);" Width="206px"></asp:TextBox>
<input type="text" id="hdfocus" style="display: none"> <div class="ac_results" id="suggest<%=this.ClientID %>">
<div id="msg<%=this.ClientID %>" class="gray ac_result_tip">请输入中文/拼音或者↑↓选择</div>
<ul id="detail<%=this.ClientID %>">
</ul>
</div> <asp:HiddenField runat="server" ClientIDMode="AutoID" ID="hdDisplayName" />
<asp:HiddenField runat="server" ClientIDMode="AutoID" ID="hdValueName" />
<asp:HiddenField runat="server" ClientIDMode="AutoID" ID="hdDataType" />

后台

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; namespace Uni2Uni.ERP.Web.Main.UI.SCMWM.UserControl
{
public partial class AutocompleteNew : System.Web.UI.UserControl
{
#region 属性
public string DataType { get; set; } /// <summary>
/// 值
/// </summary>
public string ValueName
{
get { return hdValueName.Value.Trim(); }
} /// <summary>
/// 名称
/// </summary>
public string DisplayName
{
get { return hdDisplayName.Value.Trim(); }
} /// <summary>
/// 条件参数
/// </summary>
public string Parameter { set; get; }
#endregion protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
hdDataType.Value = DataType;
} this.arrcity.Attributes.Add("detail-key", "detail" + this.ClientID);
this.arrcity.Attributes.Add("msg-key", "msg"+this.ClientID);
this.arrcity.Attributes.Add("type-key", this.hdDataType.ClientID);
this.arrcity.Attributes.Add("onkeyup", "AjaxRequest(this,event)");
this.arrcity.Attributes.Add("onblur", "InputBlur(this)");
this.arrcity.Attributes.Add("onfocus", "InputFocus(this)");
}
}
}

ASP.NET 联想控件(Autocomplete)测试可用 ascx的更多相关文章

  1. [转]Asp.Net MVC 扩展联想控件

    本文转自:http://www.cnblogs.com/bright-lin/archive/2013/02/06/MVC_SuggestBox.html 在web中,为改善用户体验,我们常会将一些文 ...

  2. asp.net分页控件

    一.说明 AspNetPager.dll这个分页控件主要用于asp.net webform网站,现将整理代码如下 二.代码 1.首先在测试页面Default.aspx页面添加引用 <%@ Reg ...

  3. ASP.Net 验证控件 RequiredFieldValidator

    使用 ASP.NET 验证控件可在网页上检查用户输入.有用于各种不同类型验证的控件,例如范围检查或模式匹配验证控件.每个验证控件都引用网页上其他位置的输入控件(服务器控件).当处理用户输入时(例如,当 ...

  4. asp.net模板控件示例

    原文:asp.net模板控件示例 模板控件允许将控件数据与其表示形式相分离,模板化控件不提供用户界面. 编写它则是为了实现一个命名容器以及包含属性和方法可由宿主页访问的类,MSDN是这样解释的. 下面 ...

  5. FineUIMvc v1.4.0 发布了(ASP.NET MVC控件库)!

    FineUIMvc v1.4.0 已经于 2017-06-30 发布,FineUIMvc 是基于 jQuery 的专业 ASP.NET MVC 控件库,是我们的新产品.由于和 FineUI(专业版)共 ...

  6. 将ASP.NET用户控件转化为自定义控件

    将ASP.NET用户控件转化为自定义控件 作者:Kevin Cheng (程建和) 最后修改时间:2006-03-14 概述:如何将ASP.NET用户控件移植为ASP.NET自定义控件 关键字:Asp ...

  7. asp.net ajax控件tab扩展,极品啊,秒杀其它插件

    说明:asp.net ajax控件tab要设置width和height,而且在线文本编辑器放能够放入tab中,也必须是asp.net的控件型在线文本,例如fckeditor,下面是我设置好的配置. & ...

  8. javascript获取asp.net服务器端控件的值

    代码如下: <%@ Page Language="C#" CodeFile="A.aspx.cs" Inherits="OrderManage_ ...

  9. ASP.NET控件<ASP:Button /> html控件<input type="button">区别联系

    ASP.NET控件<ASP:Button />-------html控件<input type="button">杨中科是这么说的:asp和input是一样 ...

随机推荐

  1. web前端网页开发一般过程

    看见很多新手同学前端开发,效率比较慢.总是拿起代码就敲,不分析,没有逻辑,反而使效率变慢.所谓磨刀不误砍柴工,有一个良好的过程,才是最主要的: 1.分析平面效果图,在草稿纸上画出基本结构图 2.建立项 ...

  2. Android NDK 简单介绍、工具安装、环境配置

    NDK全称:Native Development Kit. 1.NDK是一系列工具的集合. * NDK提供了一系列的工具,帮助开发人员高速开发C(或C++)的动态库,并能自己主动将so和java应用一 ...

  3. linux设备驱动程序注冊过程具体解释

    Linux的驱动程序注冊过程,大致分为两个步骤: 模块初始化 驱动程序注冊 以下以内核提供的演示样例代码pci-skeleton.c,具体说明一个pci设备驱动程序的注冊过程.其它设备的驱动代码注冊过 ...

  4. 一种根据URL参数条件动态生成URL的方法

    最近做了一个产品列表页类似于搜索列表页, 功能比较简单,比搜索页复杂的逻辑在于,生成各个查询条件的URL.我们的链接如下: http://xxx.xxx.xxx/product/list.html?s ...

  5. 一步一步实现FormsAuthentic验证登录

    本文不讲原理,只讲用法,原理性的东西网上特别多,不过还是会对一些要用到的东西进行解释,不深入讲原理.本文中用的是Vs2012   .net mvc 4.0.原理看这篇文章,看完这个文章绝对受益匪浅. ...

  6. HTTPS的学习

    HTTPS的学习总结   HTTPS学习总结 简述 HTTPS对比HTTP就多了一个安全层SSL/TLS,具体就是验证服务端的证书和对内容进行加密. 先来看看HTTP和HTTPS的区别 我用AFN访问 ...

  7. webpack React+ES6

    webpack踩坑之路——构建基本的React+ES6项目   webpack是最近比较火的构建工具,搭配上同样比较火的ReacJS与ES6(ES2015)一定是现在很多潮流 programmer 的 ...

  8. 判断指定进程是否为x64的方法(在ntdll判断某个x64函数是否存在)

    BOOL IsWow64ProcessEx(HANDLE hProcess) { // 如果系统是x86的,那么进程就不可能有x64 bool isX86 = false; #ifndef _WIN6 ...

  9. HP-UX查看版本

    首先采用uname -a查看服务器类型 $ uname -a    HP-UX WEBDB1 B.11.31 U ia64 0749665296 unlimited-user license 服务器的 ...

  10. [to do list][PCB][questions]and[plan]

    Questions 2014/5/29 1.最后检查布板,除了用netlist查,还有没有更快的方法? 2014/6/8 1.      R的location中心究竟是哪个? watermark/2/ ...