Лично я бы создал comboBox в кендо следующим образом:
Столбец, в котором находится поле со списком (здесь ничего не изменилось):
columns.Bound(e => e.ValueType).Width(200).Title("Type").EditorTemplateName("ValueType");
Шаблон:
@model // The model of the comboBox (Which as I have stated below should be `ValueType`)
@(Html.Kendo().ComboBoxFor(m => m)
.HtmlAttributes(new {data_skip = "true", data_bind = "defferedValue: ValueType"})
.PlaceHolder("Select a value")
.DataSource(source =>
{
source.Read("GetValues", "//Controller").ServerFiltering();
})
.MinLength(3)
.AutoBind(false)
.Filter(FilterType.Contains)
.DataValueField("ValueID")
.DataTextField("ValueText")
)
Контроллер:
public ActionResult GetValues(string text)
{
List<ValueModel> valueList = new List<ValueModel>();
if(!string.IsNullOrWhiteSpace(text)){
valueList = //Get a list of values which you want to be in this list (ie what you want to show in the comboBox)
// Above you should also do some LINQ to query against the list and get the correct values (ie .Where(x => x.ToLower().Contains(text.ToLower())).ToList())
}
return Json(valueList, JsonRequestBehaviour.AllowGet)
}
Итак, что мы делаем выше?
Я изменил шаблон для принятия класса модели, и мы отредактировали comboBox из ComboBox для ComboBoxFor. При этом используется модель, переданная в представление.
.DataValueField("ValueID")
.DataTextField("ValueText")
По сути, это идентификатор и текст comboxBox.
ПРИМЕЧАНИЕ. Я полагаю, что если нет, вам следует изменить переменную ValueType
быть классом с именем ValueType
или любым другим, и этот класс должен быть определен следующим образом:
public class ValueType
{
public int ValueID{get;set;}
public string ValueText{get;set;}
}
MinLength(3)
указывает, что пользователю необходимо ввести не менее 3 символов, чтобы начать поиск comboBox .
Мы вызываем метод контроллера GetValues
, который принимает параметр text
, и здесь мы проверяем, чтобы убедиться, что text
не является нулевым или пустым, а затем возвращаем значения из списка ValueType
Здесь Valuetext ToLower () содержит текст, переданный в функцию.
Затем мы возвращаем его в шаблон, который затем устанавливает значение в сетке.