Использование jQuery UI Autocomplete в ASP.NET - PullRequest
1 голос
/ 28 июня 2011

Я использую автозаполнение jQuery UI с ASP.NET следующим образом: Сначала я сериализирую 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?

1 Ответ

2 голосов
/ 28 июня 2011

Используйте выберите событие,

Если ваш объект выглядит как {'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);
...