У меня есть данные, которые я форматирую так:
// ... imagine populating a SqlDataReader with some results ...
var results = new StringBuilder();
while (reader.Read())
{
results.AppendFormat("{0}, {1}\n", reader["name"], reader["emailAddress"]);
}
return results.ToString();
Действие моего контроллера довольно простое:
public ActionResult Find(string q)
{
var users = Customer.Search(q);
return Content(users);
}
И мой javascript в виде выглядит так:
$(document).ready(function() {
$("input#user").autocomplete('<%= Url.Action("Find", "Customer") %>', {
minChars: 2,
width: 500,
matchContains: true,
autoFill: false,
formatItem: function(row, i, max) {
return i + "/" + max + ": (" + row[0] + ") " + row[1];
},
formatMatch: function(row, i, max) {
return row[0];
},
formatResult: function(row) {
return row[1];
}
});
});
Вопрос A
Я использую Автозаполнение отсюда . В этот момент у меня возникла проблема, когда я не могу получить два поля для чтения в виде отдельных значений. Например, если поле имени строки - «Джон», а его поле электронной почты - «john@doe.com», я ожидаю, что они будут отображаться в строке [0] и строке 1 соответственно. Тем не менее, в настоящее время я получаю «John, john@doe.com» в строке [0], а строка 1 не определена.
Что мне нужно изменить (либо в javascript, либо в методе, в котором я строю строку), чтобы получить строку [0] и строку 1 для отображения правильных данных?
Вопрос B
Я бы предпочел, чтобы данные в именованных строках. Под этим я подразумеваю:
formatItem: function(row, i, max) {
return i + "/" + max + ": (" + row.name + ") " + row.email;
Я некоторое время пытался отформатировать свои данные, чтобы это произошло, но я никогда не был успешным. Как мне отформатировать мои данные, чтобы автозаполнение это понимало?