【问题标题】:How can we integrate jQuery autocomplete using asp.net, webservice and sql database?我们如何使用 asp.net、webservice 和 sql 数据库集成 jQuery 自动完成功能?
【发布时间】:2009-01-19 10:36:42
【问题描述】:

我正在尝试实现为“jQuery Autocomplete and ASP.NET”提供的代码, 但无法集成它,因为您使用的是亚音速查询数据库。

那么你能告诉我如何使用C#从asp.net中的webservice查询sqldatabase并将查询结果绑定到插件吗?

【问题讨论】:

    标签: asp.net jquery subsonic autocomplete


    【解决方案1】:

    这是一个非常简单的任务,关键是 jQuery 自动完成扩展器需要一个值数组。这是我如何解析来自 ASMX Web 服务的标准 XML 结果以与 jQuery 自动完成扩展器一起使用的示例。

    由于 ASP.NET 喜欢重写你的 ID,你可以传入 ClientID 来获取动态 ID。

        $("#<%= TextBox1.ClientID %>").autocomplete("/Demo/WebSvc.asmx/SuggestCustomers", {
            parse: function(data) {
                var parsed = [];
    
                $(data).find("string").each(function() {
                    parsed[parsed.length] = {
                        data: [$(this).text()],
                        value: $(this).text(),
                        result: [$(this).text()]
                    };
                });
                return parsed;
            },
            dataType: "xml"
        });
    

    以下是关联的 Web 服务的外观,记得取消注释 Web 服务上的 [ScriptService] 属性:

    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ScriptService]
    public class WebSvc: WebService
    {
        [WebMethod]
        public string[] SuggestedCustomers(string q)
        {
            // Do Query
    
            // Add items into string array
            List<string> items = new List<string>();
            while (dr.Read())
            {
                items.Add(dr[0].ToString());
            }
    
            // Return array
            return items.ToArray();
        }
    
    }
    

    【讨论】:

    • @Zachary:您忘记了 formatItem: override 来处理您在 parse: override 中定义的新数组。 @Everyone:Zachary 通过解释如何将结果格式化为自己的数组对象(如上所述的“parsed[]”)做得很好。但是,既然您有一个正在传递的数组对象,您需要处理它的显示。也覆盖 formatItem: 方法。格式项:函数(行,我,n){返回row.result}。您可能还希望覆盖根 autocompleter.result() 方法以对“选定”操作项进行特殊处理。
    【解决方案2】:

    我不精通 asp.net,但从根本上说,就像大多数网络编码问题一样,这涉及将您的问题分解成更小的问题。

    从架构的角度来看,您的组件可能包括以下内容...

    • 可能使用您的数据库等来回答或为您的查询生成结果的服务层。
    • 一个 Web 组件或服务入口点,它使用上述已完成的服务以 browesrr 易于理解的格式(例如 JSON)返回数据。
    • 一些使用 jquery 的 javascript 调用在上面的直接点中定义的端点。
    • 为上述所有组件编写单元测试 - 不要忘记测试失败案例,因为众所周知,软件有时会失败...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-20
      • 2011-07-02
      • 1970-01-01
      • 1970-01-01
      • 2017-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多