使用自动完成功能从ASP.NET Web窗体中使用c#从数据库中获取数据?

时间:2011-09-01 13:19:00

标签: c# ajax webforms

我正在使用ASP.NET Web Forms和C#修改由另一个程序员开发的现有应用程序。

我必须添加一个简单的 TextBox 自动填充功能。当用户开始在 TextBox 中输入内容时, TextBox 应根据存储在数据库中的数据显示建议。建议必须仅基于前缀(已经输入的单词的初始部分)。

我发现很多基于 autocomplete AJAX extender 的示例,但它基于从Web Service获取数据。为完成此任务,有哪些步骤和所需的方法和操作?

3 个答案:

答案 0 :(得分:2)

您发布的链接几乎解释了需要完成的所有事情。关注this video

如果您需要传递一些其他参数,请选中this示例。

步骤。

1.添加Textbox和Ajax Extender页面并将目标ID指定为textboxid。指定扩展器的Web服务名称
2.在上面的链接中实现webservice并在浏览器中测试它 3.在webservice中编写您想要检索数据的方式。你将返回一个字符串[]。

您可以使用webmethod属性进行常规方法检查

,而不是创建Web服务

http://www.ajaxtutorials.com/ajax-tutorials/using-autocomplete-in-the-ajax-toolkit/
http://allwrong.wordpress.com/2007/03/13/ms-ajax-autocomplete-extender-using-a-page-method/

答案 1 :(得分:1)

您可以在页面代码隐藏上定义方法,使用 [WebMethod] 属性对其进行修饰,然后在 ServiceMethod 上进行设置下拉延伸器的属性。
该方法必须实现逻辑以检索/过滤结果,并且其签名必须与示例匹配(例如:public string [] MyMethod(string prefixText,int count))。

答案 2 :(得分:0)

先决条件是拥有“AjaxControlToolKit”。

首先,我们需要将文本框放在updatepanel中,以便可以进行部分回发,从而消除整个页面重新加载。 使用ajax autocompleteExtender,我们可以使用它来调用具有DB调用的服务方法,该方法将获取数据并填充文本框。

       <asp:UpdatePanel ID="pnlAcct" runat="server">
  <ContentTemplate>
  <asp:TextBox ID="txtAcctNum"></asp:TextBox>
  <asp:AutoCompleteExtender ID="AutoCompleteExtenderAccount" runat="server" MinimumPrefixLength="1" ServiceMethod="GetSourceAccount" ServicePath="~/AutoComplete/AutoComplete.asmx"
                                    TargetControlID="txtAcctNum" Enabled="True" CompletionSetCount="20" CompletionInterval="1000"
                                    EnableCaching="true">
                                </asp:AutoCompleteExtender>
                            </ContentTemplate>
                            <Triggers>
                                <asp:AsyncPostBackTrigger ControlID="txtAcctNum" />
                            </Triggers>
                        </asp:UpdatePanel>

可以通过添加WebService(.asmx文件)并在.asmx.cs文件中编写以下代码来完成服务调用。字符串中可用的数据将显示在文本框下方。

    [System.Web.Services.WebMethod]
    [System.Web.Script.Services.ScriptMethod]
     public string[] GetSourceAccount(string prefixText, int count)
     {
  List<string> lstSimilarSource = new List<string>();
  //Service call and populating the string
  lstSimilarSource = Autocomplete.GetSimilarSource(prefixText, "ACCOUNT");
   return lstSimilarSource.ToArray();
    }