代码之家  ›  专栏  ›  技术社区  ›  Simon Dugré Metin Atalay

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

  •  1
  • Simon Dugré Metin Atalay  · 技术社区  · 17 年前

    我正在使用Visual Studio 2008编程,并使用.NET Framework 3.5和C#制作一个web应用程序。所有DAL都与一个强大的实体框架包装器(类似于VS.NET2010将使用的包装器)链接。我有一个文本框用于搜索名字和姓氏。我遇到的问题是,我使用的是AJAX控制工具包2.0,它提供了一个自动完成的扩展程序,但是通过使用WebServices(asmx)。有没有其他方法可以在不使用Web服务的情况下使用auto complete?

    西蒙

    旁白:对不起我的英语,我已经尽力了:)!

    4 回复  |  直到 11 年前
        1
  •  7
  •   Community Mohan Dere    6 年前

    web方法 它可以用来调用以检索匹配项的列表。

    web方法

    如果省略ServicePath属性,AJAX框架将尝试在文本框和自动完成扩展程序所在的实际网页中的代码中查找ServiceMethod web方法。这通常在“代码隐藏”文件中。

    AutoComplete Sample 第页:

    • ServiceMethod—要调用的web服务方法。签名

    [System.Web.Services.WebMethod]
    [System.Web.Script.Services.ScriptMethod]
    公共字符串[]GetCompletionList(字符串前缀文本,整数计数)

    请注意,您可以替换 名称为的“GetCompletionList” 您的选择,但返回类型和 参数名称和类型必须完全相同 匹配,包括案例。

    • 如果没有提供,服务方法应该是页面方法。
        2
  •  5
  •   Dan Diplo    17 年前

    是的,您可以将codebehind文件中的方法标记为webmethod:

       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
          }
       }
    

    看见 ASP.NET AJAX callbacks to Web Methods in ASPX pages .

    the ComboBox ,它本质上是一个数据绑定自动完成控件。

        3
  •  1
  •   MJ Fathinia    17 年前

    如果您不介意使用一些JavaScript,让您的手有点脏,那么您可以使用jQuery或Prototype的自动完成插件,然后使用页面返回数据或Webservice。看见 jqery AutoComplete demo

        4
  •  0
  •   Simon Dugré Metin Atalay    17 年前

    Default.aspx

        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <asp:TextBox ID="TextBox1" runat="server" />
        <cc1:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" 
            ServiceMethod="GetCompletionList" ServicePath="Codes/Utility.cs" 
            TargetControlID="TextBox1" UseContextKey="True" CompletionInterval="100" 
            MinimumPrefixLength="1">
        </cc1:AutoCompleteExtender>
    

    ~/code/Utility.cs

        public class Utility {
    
        [System.Web.Services.WebMethod]
        [System.Web.Script.Services.ScriptMethod]
        public string[] GetCompletionList(string prefixText, int count) {
            return new string[] { "Bruno", "Simon", "Joanie", "Noémie", "Johanne", "Serge", "France", "Jacques", "Mylène" };
        }
    
    }
    

    但是当我在文本框中输入时,什么都没有显示。。。哼不知道该怎么办。