具有自动完成功能的文本框

Sim*_*gré 1 c# asp.net entity-framework autocomplete ajaxcontroltoolkit

我正在使用Visual Studio 2008进行编程,并使用带有C#的.NET Framework 3.5制作Web应用程序.所有DAL都与强大的实体框架包装器链接(类似于VS.net 2010将使用的那个.)我有一个用于搜索first和lastname的文本框.我遇到的问题是我正在使用AJAX Control Toolkit 2.0,它提供了一个Auto complete extender,但是,通过使用WebServices(asmx).有没有其他方法可以在不使用Web服务的情况下使用自动完成功能?

问候,

西蒙

Ps:对不起我的英文,我尽我所能:)!

Cra*_*gTP 7

你不需要为了提供自动完成功能的文本框来实现一个单独的Web服务,但是,你需要提供自动完成扩展使用有效的Web方法,它可以使用在调用来检索列表匹配条目.

AutoComplete Extender控件的AutoComplete功能的关键属性是ServiceMethod和ServicePath属性.ServiceMethod指定由AJAX框架调用以检索自动完成下拉列表的匹配项的Web方法的名称,ServicePath属性指定将包含ServiceMethod属性方法的文件的完整路径和文件名.请注意,ServicePath属性是可选的.

如果省略ServicePath属性,AJAX框架将尝试在实际网页的代码中找到ServiceMethod Web方法,文本框和自动完成扩展程序位于该网页中.这通常是在"代码隐藏"文件中.

从" 自动完成示例"页面:

  • ServiceMethod - 要调用的Web服务方法.此方法的签名必须符合以下条件:

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

请注意,您可以使用您选择的名称替换"GetCompletionList",但返回类型和参数名称和类型必须完全匹配,包括大小写.

  • ServicePath - 扩展程序将从中拉出单词\ _句子完成的Web服务的路径. 如果未提供,则服务方法应为页面方法.


Dan*_*plo 5

是的,您可以将代码隐藏文件中的方法标记为web方法:

   public partial class Products : System.Web.UI.Page 
   { 
     [System.Web.Services.WebMethod()] 
      [System.Web.Script.Services.ScriptMethod()] 
      public static string[] GetTerms(string prefix) 
      {
        // Put your logic here
      }
   }
Run Code Online (Sandbox Code Playgroud)

请参阅ASPX页面中的Web方法的ASP.NET AJAX回调.

此外,如果您使用NET 3.5,您可以使用后来的Toolkit,它包含ComboBox,它实际上是一个数据绑定自动完成控件.