insus.net的以前的asp.net mvc的练习中,也有实现过autocomplete的功能。依次是使用jquery来实现。
首先在数据库准备一些数据:
create table [dbo].[item] ( [item_nbr] int identity(1,1) primary key not null, [itemname] nvarchar(40) ) go insert into [dbo].[item] ( [itemname] ) values ('q04-aa-0001'),('q04-aa-0002'),('q04-aa-0003'),('q04-aa-0004'),('q04-aa-0005'), ('q04-bb-0001'),('q04-bb-0002'),('q04-bb-0003'),('q04-bb-0004'),('q04-bb-0005'), ('q04-cc-0001'),('q04-cc-0002'),('q04-cc-0003'),('q04-cc-0004'),('q04-cc-0005'), ('q04-dd-0001'),('q04-dd-0002'),('q04-dd-0003'),('q04-dd-0004'),('q04-dd-0005'), ('q04-ee-0001'),('q04-ee-0002'),('q04-ee-0003'),('q04-ee-0004'),('q04-ee-0005'), ('q04-ff-0001'),('q04-ff-0002'),('q04-ff-0003'),('q04-ff-0004'),('q04-ff-0005') go create procedure [dbo].[usp_item_getall] as select [item_nbr],[itemname] from [dbo].[item] go source code
转到asp.net mvc项目中,创建一个model:
再创建一个entity:
创建视图操作action:
安装jqueryui:
创建mvc视图:
上面标记#3是jquery代码,详细如下:
$(function () { var cache = {}; $("#itemname").autocomplete({ minlength: 0, source: function (request, response) { var term = request.term; if (term in cache) { data = cache[term]; response($.map(data, function (item) { return { label: item.itemname, value: item.item_nbr } })); } else { $.ajax({ url: "/july16/autocomplete", datatype: "json", type: "post", contenttype: "application/json; charset=utf-8", data: json.stringify({ top: 10, term: request.term }), success: function (data) { if (data.length) { cache[term] = data ; response($.map(data, function (item) { return { label: item.itemname, value: item.item_nbr } })); } } }); } }, focus: function (event, ui) { $("#itemname").val(ui.item.label); return false; }, select: function (event, ui) { $("#itemname").val(ui.item.label); $("#itemnbr-id").val(ui.item.value); return false; } }) }); source code
实时操作演示:
黄山市民网:https://www.huangshanshimin.com/