У меня работает функция автозаполнения jquery.т.е. я набираю поле, а затем возвращаю данные на основе строки, набранной в поле.Моя проблема в том, что я также хотел бы использовать данные, введенные в другое поле, при определении того, что я должен возвращать текущее поле.Например, я хочу вернуть только драйверы, принадлежащие определенной компании.Эти данные вводятся в другое поле.Как мне изменить приведенный ниже код для выполнения этой задачи?Предположим, у меня есть свойство "Model.Company".
Представление (часть):
<%= Html.AutoCompleteTextBox2("DrvId", "DriverID", Model.DrvId, new { style = "width:200px;" })%>
<%= Html.InitializeAutoComplete2("DrvId", "DriverID", "Driver ID", Model.DrCmpId, Url.Action("Drivers", "AutoComplete"), new { delay = 100, minChars = 1 }, true)%>
Контроллер:
public ActionResult Drivers(string q)
{
List<TmwXref> driverList = baseService.GetTypeList("Driver");
for (var i = 0; i < driverList.Count; i++)
{
if (driverList[i].Value.StartsWith(q, StringComparison.OrdinalIgnoreCase))
{
Response.Output.Write("{0}|{1}\r\n", driverList[i].Value + " - " + driverList[i].Description, i);
}
}
return new CancelViewResult();
}
Помощник пользовательского интерфейса:
public static string InitializeAutoComplete2<T>(this HtmlHelper<T> html,
string textBoxName, string fieldName, string labelName, string fieldDesc,
string url, object options, bool wrapInReady)
{
StringBuilder sb = new StringBuilder();
if (wrapInReady) sb.AppendLineFormat("<script language='javascript'>");
if (wrapInReady) sb.AppendLineFormat("$().ready(function() {{");
sb.AppendLine();
sb.AppendLineFormat(" $('#{0}').autocomplete('{1}', {{", textBoxName.Replace(".", "\\\\."), url);
PropertyInfo[] properties = options.GetType().GetProperties();
for (int i = 0; i < properties.Length; i++)
{
sb.AppendLineFormat(" {0} : {1}{2}",
properties[i].Name,
properties[i].GetValue(options, null),
i != properties.Length - 1 ? "," : "");
}
sb.AppendLineFormat(" }});");
sb.AppendLine();
sb.AppendLineFormat(" $('#{0}').result(function(e, d, f) {{", textBoxName.Replace(".", "\\\\."));
sb.AppendLineFormat(" $('#{0}').val(d[1]);", fieldName);
sb.AppendLineFormat(" }});");
sb.AppendLine();
if (wrapInReady) sb.AppendLineFormat("}});");
if (wrapInReady) sb.AppendLineFormat("</script>");
return sb.ToString();
}
public static string AutoCompleteTextBox2<T>(this HtmlHelper<T> html, string textBoxName, string fieldName, string value, object htmlAttributes)
{
return string.Format("{0} {1}", html.TextBox(textBoxName, value, htmlAttributes), html.Hidden(fieldName));
}