一:“WebService文件夹”下有一个“TxtName.asmx”文件。
其中的代码是:<%@ WebService Language="C#" CodeBehind="~/App_Code/TxtName.cs" Class="TxtName" %>二:“App_Code文件夹”下的“TxtName.cs”文件。
其中的代码如下:
using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
/// <summary>
/// TxtName 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService] public class TxtName : System.Web.Services.WebService
{ public TxtName()
{ //如果使用设计的组件,请取消注释以下行
//InitializeComponent();
} [WebMethod]
public string[] GetName(string prefixText)
{
return new M_BLL.T_Admin().AjaxName(prefixText);
} }三:在“aspx”文件中的使用实例
<%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Namespace="System.Web.UI" TagPrefix="asp" %><cc1:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" CompletionInterval="100"
MinimumPrefixLength="1" ServiceMethod="GetName" ServicePath="../../WebService/TxtName.asmx"
TargetControlID="Txt_Name">
</cc1:AutoCompleteExtender>但在这里提示错误,原因可能是这个网站是.net2.0的。而小弟直接升级成.net3.5,而页面中的“Ajax”注册的是“Version=1.0.61025.0”,于是提示创建控件错误,错误信息如下:
无法创建类型“cc1:AutoCompleteExtender”。未能加载文件或程序集“System.Web.Extensions,Version=1.0.61025.0,Culture=netral,PublickeyToken=31bf3856ad364e35”
问题一:这个“WebServices”是什么作用?实现的什么功能?问题二:这里的AJAX是什么作用?实现的什么功能?问题三:“WebServices”是怎样和“AJAX”相互作用的?问题四:这里是net2.0下的AJAX版本,怎样把它改为net3.5下的AJAX版本???
解决方案 »
- ?急 怎实现右键 添加 删除 修改 TreeView的节点
- 把两个datatable关联datarelation 循环两个table的数据 成一个新表 快来帮忙
- 一个关于DataPager分页控件的问题。
- ASP.NET如何实现一个分层:“点击 国家->显示所有的省->显示市-> 县->区”的操作?数据库SQL SERVER2005/2000。
- 谢谢了,excel表导入SQL表中
- 怎么把数据库里的一条记录的一个字段的值,帮定到TextBox上?
- DataGird中帮定TextBox问题
- 【update的值和我期望的不一样】--在线等,马上结帐==========
- 通常你在什么地方用Try...catch 捕捉错误?大家讨论讨论嘛。
- powerMenu的下拉菜单被在其区域内的Label控件遮住。如何解决?
- 这两种转向的区别
- 关于股票信息在本公司网站的显示
问题一,问题二:WebServices提供了一些“服务”,实现的是文本框自动匹配。就像Google搜索栏那样。
问题三:
问题四:貌似得下载一个新版放到安装目录什么的。不太懂。
2. Ajax=>用户操作的时候一个异步,就是你操作,但是看不到页面的刷新。
3. Ajax主要是前台Js,通过XmlHttpRequest来向WebServices发送请求,然后得到结果,然后解析显视在前台页面上.
4.不晓得你用的那个版本的vs!
你ajax 准备直接 加载WebSerivces 数据 不经过处理么?
<%@ 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>AJAX控件之AutoComplete</title>
</head>
<body style="text-align: center">
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
<asp:TextBox ID="MyAuto" runat="server" Width="191px"></asp:TextBox><br />
<br />
<cc1:AutoCompleteExtender ID="ace" runat="server" CompletionInterval="100" MinimumPrefixLength="1"
ServiceMethod="GetCompletionList" ServicePath="WebService.asmx" TargetControlID="MyAuto">
</cc1:AutoCompleteExtender>
</div>
</form>
</body>
</html> # using System;
using System.Web;
using System.Collections.Generic;
using System.Web.Services;
using System.Web.Services.Protocols;
/// <summary>
/// WebService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//用以调用Web Service方法签名
[System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService {
public WebService () {}
[WebMethod]
public string[] GetCompletionList(string prefixText, int count)
{
//if (count == 0)
//{
// count = 10;
//}
Random random = new Random();
List<string> items = new List<string>(count);
for (int i = 0; i < count; i++)
{
char c1 = (char)random.Next(65,90);
char c2 = (char)random.Next(97, 122);
char c3 = (char)random.Next(48, 57);
char c4 = (char)random.Next(33, 43);
items.Add(prefixText + c1 + c2 + c3 + c4);
}
return items.ToArray();
}
}
另外问下LZ,“InitializeComponent();”被注释掉了,不会影响使用吗???
public TxtName()
{ //如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
1.TargetControlID:指定将被辅助完成自动输入的控件ID,这里的控件只能是TextBox;
2.ServicePath:指出提供服务的WEB服务路径,若不指出则ServiceMethod表示本页面对应的方法名;
3.ServiceMethod:指出提供服务的方法名;
4.MinimumPrefixLength:指出开始提供提示服务时,TextBox控件应有的最小字符数,默认为3;
5.CompletionSetCount:显示的条数,默认为10;
6.EnableCaching:是否在客户端缓存数据,默认为true;
7.CompletionInterval:从服务器读取数据的时间间隔,默认为1000,单位:毫秒。 ASPX页面代码:
<body>
<form id="form1" runat="server">
<asp:ScriptManager runat="server" ID="ScriptManager1" />
<ajaxToolkit:AutoCompleteExtender
ID="AutoCompleteExtender1"
runat="server"
ServicePath="AutoComplete.asmx"
TargetControlID="TextBox1"
ServiceMethod="GetTextString">
</ajaxToolkit:AutoCompleteExtender>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</form>
</body> WebServcie-AutoComplete.cs代码:
using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)][System.Web.Script.Services.ScriptService]public class AutoComplete : System.Web.Services.WebService { public AutoComplete () {
} [WebMethod]
public string[] GetTextString(string prefixText, int count)
{
string[] strArray = new string[count]; for (int i = 0; i < count; i++)
{
strArray[i] = prefixText + i.ToString();
} return strArray;
}
}
在这里需要注意以下几点:
1.由于该WEB服务是为Ajax框架提供服务的,因此在类声明之前得加上属性声明:
[System.Web.Script.Services.ScriptService]
2.特别需要注意的是GetTextString这个方法。凡是为AutoCompleteExtender控件提供服务的方法都必需完全满足以下三个条件:
A.方法的返回类型必需为:string [];
B.方法的传入参数类型必需为:string , int;
C.两个传入参数名必需为:prefixText , count。