自动完成功能

wupiero 2009-05-10 10:05:30
类似google...
如何实现?
...全文
174 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangqingsong82 2011-04-10
  • 打赏
  • 举报
回复
能不能发一个能调试成功的东东。。哎。。晕
pathuang68 2009-05-10
  • 打赏
  • 举报
回复
帮顶
xslqingfeng 2009-05-10
  • 打赏
  • 举报
回复
我已经做出了效果,是VB。net 做的,你转换下就可以了
Dim Dataset2 As New DataSet()
Dim sqlstr2 As String
Dim col2 As New AutoCompleteStringCollection
Dim zhonglei As String = ComboBox1.Text.ToString.Trim
Try
sqlstr2 = "SELECT * FROM GbItem "
Dataset2 = GetDataFromDB(sqlstr2)
For I = 0 To Dataset2.Tables(0).Rows.Count - 1
ComboBox1.Items.Add(Dataset2.Tables(0).Rows(I)("GBItem").ToString)

'ComboBox3.SelectedIndex = 0
Next

For I = 0 To Dataset2.Tables(0).Rows.Count - 1

col2.Add(Dataset2.Tables(0).Rows(I)("GBItem").ToString)
Next
ComboBox1.AutoCompleteCustomSource = col2
ComboBox1.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend
ComboBox1.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource


这个是查询整个数据库,要实现自动补全曾经输入过的内容就更简单,
zhongruijie416 2009-05-10
  • 打赏
  • 举报
回复
恩,AutoCompleteExtender就能实现了
zzxap 2009-05-10
  • 打赏
  • 举报
回复
http://blog.csdn.net/glt3260053/archive/2008/12/27/3620214.aspx
zzxap 2009-05-10
  • 打赏
  • 举报
回复
本章介绍AutoCompleteExtender的使用方法。用过Google的朋友都会发现,当我们在搜索框输入关键字的时候,Google会自动列出相关关键字提示。那么用Ajax.net也能做到么?答案是:Of course!

第一步:建立AJAX Control Toolkit Website

本例子只需要一个TextBox控件和一个AutoCompleteExtender组件。拖进设计界面后代码如下所示:

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server">
</ajaxToolkit:AutoCompleteExtender>
第二步:建立WebService

要使用AutoCompleteExtender,我们要通过WebService传递数据。在解决方案资源管理器单击项目-〉添加新项-〉Web服务。我在这里使用了默认的名称,大家有需要自己改吧。

WebService.asmx的代码如下:

using System;
using System.Web.Services;
using System.Collections.Generic;


///<summary>
/// WebService 的摘要说明
///</summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService {

public WebService () {

//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}

[WebMethod]
public string[] GetCompleteList(string prefixText, int count) {
char c1, c2, c3;
if (count == 0)
count = 10;
List<String> list = new List<string>(count);
Random rnd = new Random();
for (int i = 1; i <= count; i++)
{
c1 = (char)rnd.Next(65, 90);
c2 = (char)rnd.Next(97, 122);
c3 = (char)rnd.Next(97, 122);
list.Add(prefixText + c1 + c2 + c3);
}
return list.ToArray();
}
}
注意:加亮部分大家要自行添 加。[System.Web.Script.Services.ScriptService]一定要加,它告诉.net runtime这个WebService被允许从客户端调用。另外System.Collections.Generic是List的命名空间,List 可以理解成物件或类别的集合,我们可以根据特殊条件在List里找到我们所需要的值,是.net 2.0新增加的类。该函数的意思是产生三个随机字母,自动添加在输入字符串的后面。另外prefixText和count这两个参数名称要严格遵守拼写格式,原因以前已经介绍过了。

第三步:设置AutoCompleteExtender

具体设置代码如下:

<ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server"
TargetControlID="TextBox1"
CompletionSetCount="12"
EnableCaching="true"
MinimumPrefixLength="3"
ServicePath="WebService.asmx"
ServiceMethod="GetCompleteList">
</ajaxToolkit:AutoCompleteExtender>
TargetControlID是目标控件ID,这里是TextBox1。CompletionSetCount是指列表列出输入提示的数量。EnableCaching指是否启用缓存,建议启动。MinimumPrefixLength是指输入多少个字符后开始列出输入提示列表。ServicePath是指Web服务的文件名,这里是WebService.asmx。ServiceMethod是指调用Web服务的函数名,这里是GetCompleteList。

OK,运行!效果如下图:
zzxap 2009-05-10
  • 打赏
  • 举报
回复

AutoCompleteExtender控件可以帮你自动填写TextBox控件(在数据库中查找).
属性:
TarGetControlID:指定要让"自动输入完成"扩展器要扩展的TextBox控件ID.
ServicePath:Web服务的位置路径.
ServiceMehod:要调用的Web服务的方法名.方法签名如下:

[System.Web.Services.WebMethod]
[System.Web.Script.Service.ScriptMethod]
public string[] GetCompetionList(string prefixText,int count){......}


前台代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<cc1:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" TargetControlID="TextBox1"
MinimumPrefixLength="1" ServiceMethod="GetProductName" ServicePath="WebService.asmx">
</cc1:AutoCompleteExtender>
</div>
</form>
</body>
</html>

WebService代码:

using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Data;
using System.Data.SqlClient;
using System.Web.Script.Services;//关键程序集引用
using System.Collections.Generic;//关键程序集引用

/// <summary>
/// WebService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService()]//一定要添加
public class WebService : System.Web.Services.WebService {

public WebService () {

//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}

[WebMethod]
[ScriptMethod]
public string[] GetProductName(string prefixText, int count)
{
List<string> suggestions=new List<string>();//声明一泛型集合
SqlConnection con = new SqlConnection("server=.;database=NorthWind;uid=sa;pwd=;");
con.Open();
SqlCommand com = new SqlCommand("select distinct productname from Products where productname like @prefixname order by productname", con);
com.Parameters.Add("@prefixname",SqlDbType.NVarChar).Value=prefixText + "%";
SqlDataReader sdr = com.ExecuteReader();
while (sdr.Read())
{
suggestions.Add(sdr.GetString(0));
}
sdr.close();
con.close();
return suggestions.ToArray();
}
}
oec2003 2009-05-10
  • 打赏
  • 举报
回复
asp.net ajax 有个autocomplete控件 可以实现
http://www.cnblogs.com/oec2003/archive/2007/08/18/860870.html

也可以根据输入的关键字 查出数据 放到div中,然后将div定位到文本框下方

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧