【问题标题】:Use autocomplete to fetch data from Database in ASP.NET Web Forms with c#?c# 使用自动完成从 ASP.NET Web 窗体中的数据库中获取数据?
【发布时间】:2011-09-01 13:18:59
【问题描述】:

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

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

我发现了许多基于 autocomplete AJAX extender 的示例,但它是基于从 Web 服务获取数据的。为了完成这项任务,有哪些步骤和需要的方法和操作?

【问题讨论】:

    标签: c# ajax webforms


    【解决方案1】:

    您发布的链接几乎解释了需要完成的所有事情。关注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/

    【讨论】:

    • 感谢您的回答。有没有办法使用网络服务?例如,通过在 MVC 中使用 JSon 调用方法?
    • @CiccioMiami 检查我编辑的答案我添加了 WebMethod 部分。
    【解决方案2】:

    您可以简单地在页面代码隐藏中定义一个方法,用 [WebMethod] 属性装饰它,然后在 ServiceMethod 上设置它下拉扩展器的属性。
    该方法必须实现检索/过滤结果的逻辑,并且其签名必须与示例匹配(例如:public string[] MyMethod(string prefixText, int count))。

    【讨论】:

      【解决方案3】:

      先决条件是拥有“AjaxControlToolKit”。

      首先,我们需要将文本框放在更新面板中,以便可以进行部分回发,从而消除整个页面的重新加载。 使用 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();
          }
      

      【讨论】:

        猜你喜欢
        • 2016-03-04
        • 1970-01-01
        • 2021-02-26
        • 2018-10-23
        • 1970-01-01
        • 2015-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多