【问题标题】:Using jQuery UI Autocomplete in ASP.NET在 ASP.NET 中使用 jQuery UI 自动完成
【发布时间】:2011-06-28 05:33:52
【问题描述】:

我正在使用带有 ASP.NET 的 jQuery UI 自动完成功能,如下所示: 首先,我将 Good names 序列化为字符串数组,然后将 Array 传递给 jQuery UI AutoComplete 的源

   //PageLoad
    tadok.Entities.TList<tadok.Entities.Good> GoodEntites = tadok.Data.DataRepository.GoodProvider.GetAll();
    List<string> GoodNames = new List<string>();
    foreach (object item_loopVariable in GoodEntites) {
        item = item_loopVariable;
        GoodNames.Add(string.Format(item.GodTitle));

    }
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    Values = serializer.Serialize(GoodNames);

标记代码:

  var availableTags = <%= Values %>
       $("#txtGoodAutoComplete").autocomplete({
         source: availableTags

          });

我正在序列化的对象具有名称为 ID 的属性。如何序列化 ID 并将 ID 存储在例如自动完成的 Select item 事件的隐藏字段中?
更新 我的主要挑战是如何序列化 ID?

【问题讨论】:

    标签: c# jquery asp.net jquery-ui jquery-ui-autocomplete


    【解决方案1】:

    使用select事件,

    如果你的对象看起来像{'label':'A', 'value':'A', 'ID':'7897975'}

    $( ".selector" ).autocomplete({
    select: function(event, ui) { 
         $('#hiddenField').val(ui.item.ID);//Item is your selected object.
    }
    });
    

    更新:

    我从未使用过 C#。但是应该有任何内置的 JSON 解析器可用。

    在java中我创建这样的JSON格式,

    JSONArray jsonArray = new JSONArray();
    JSONObject jsonObject = null;
    
    for(Country country : countries){
                    jsonObject = new JSONObject();
                    jsonObject.put("label", country.getName());
                    jsonObject.put("value", country.getCode());
                    jsonObject.put("id", country.getId().toString());
                    jsonArray.add(jsonObject);
                }
    String json = jsonArray.toJSONString();//The json string will look like, [{'label':'A', 'value':'A', 'id':'7897925'},{'label':'B', 'value':'B', 'id':'7497975'},{'label':'C', 'value':'C', 'id':'7843975'},{'label':'D', 'value':'D', 'id':'7857975'}]
    
    //Your autocomplete source should return something like the above json string
    



    通过使用 Javascript 序列化器: 首先添加一个类:

    public class GoodAutoComplete
    {
        public string label;
        public string value;
        public string ID;
    }
    


    然后像这样序列化对象:

    tadok.Entities.TList<tadok.Entities.Good> GoodEntites = tadok.Data.DataRepository.GoodProvider.GetAll();
    List<GoodAutoComplete> GoodItems = new List<GoodAutoComplete>();
    foreach (object item_loopVariable in GoodEntites) {
        item = item_loopVariable;
        GoodItems.Add(new GoodAutoComplete {
            ID = item.GodId,
            label = string.Format(item.GodTitle + "{(0)}", item.GodDescrp).Replace("()", ""),
            value = string.Format(item.GodTitle + "{(0)}", item.GodDescrp).Replace("()", "")
        });
    }
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    Values = serializer.Serialize(GoodItems);
    

    【讨论】:

    • 谢谢,请您解释一下如何序列化 ID ?现在在我的代码中,我只是序列化了 Good Name 。
    • 我怎样才能像 {'label':'A', 'value':'A', 'ID':'7897975'} 这样序列化我的对象?
    • 为 C# 寻找任何 JSON 库
    • @TamilVendhan:感谢您的关注。我刚刚在您的答案中添加了带有 .NET JavascriptSERIALIZER 的 C# 示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    • 2011-03-30
    • 2018-01-16
    • 2013-12-12
    相关资源
    最近更新 更多