2016-11-08 7 views
0

Я работаю с пользовательским интерфейсом Kendo в приложении MVC. У нас есть сетка, и когда пользователь открывает строку для редактирования, у нас есть dropDownList, который содержит названия компаний. Я пытаюсь получить DDL по умолчанию для названия компании, относящегося к строке.Kendo UI DropDownListFor Set SelectedValue

Вот код колонки:

columns.Bound(e => e.company_business_name).Width(220).Title("Company") 
    .EditorTemplateName("CompanyName"); 

и вот код editorTemplate:

@model string 

@(Html.Kendo().DropDownListFor(m => m) 
     .DataTextField("Text") 
     .DataValueField("Value") 
     .BindTo((System.Collections.IEnumerable)ViewData["Companies"]) 
) 

и метод, который заполняет DDL:

private void PopulateCompanies() 
    { 
     var companyList = new List<SelectListItem>(); 

     if (!string.IsNullOrEmpty(Session["Companies"] as string)) 
     { 
      companyList = (List<SelectListItem>)Session["Companies"]; 
     } 
     else 
     { 
      companyList = new DataAccess().GetCompanies(CurrentSettings.getUser().userId); 
      CacheCompanies(companyList); 
     } 

     ViewData["Companies"] = companyList; 
    } 

EDIT:

Обновлено код. DDL все еще заполняется, но я все еще не получаю выбранное значение, когда я нажимаю «редактировать» в строке сетки. Почувствуй, что я рядом, помоги!

+0

Я хотел бы предложить, чтобы начать смотреть на демо пользовательский редакторе (http://demos.telerik.com/aspnet-mvc/grid/editing- custom) и демонстрационный столбец «Foreignkey» (http://demos.telerik.com/aspnet-mvc/grid/foreignkeycolumn). Обратите внимание, что для того, чтобы видеть * все *, что происходит, вам придется открыть демонстрационный проект, который установлен с Kendo MVC, поскольку онлайн-демонстрации MVC не показывают все интересующие файлы, в случае демонстрации редактора custome , он не показывает вам EditorTemplate, демонстрационный проект должен быть найден здесь: <Пользовательский интерфейс Telerik для папки установки MVC> \ wrappers \ aspnetmvc \ Примеры –

+0

Что возвращает «GetCompanies»? Можете ли вы разместить образцы данных? – ataravati

ответ

1

Проблема заключается в том, что модель вашего шаблона редактора - это вся ваша модель, а не свойство company_business_name (очень плохое имя для свойства, кстати. Вам необходимо следовать стандартным соглашениям об именах).

Вам даже не нужно заполнять выпадающий список.

Ваш редактор шаблон должен быть что-то вроде этого:

@model string 

@(Html.Kendo().DropDownListFor(m => m) 
    .DataTextField("Text") 
    .DataValueField("Value") 
    .DataSource(x => 
     x.Read(read => read.Action("GetCompanies", "AddEntry")) 
    ) 
) 
+0

Спасибо, ataravati, я изменил код, чтобы отразить ваше предложение. DDL заполняет, но все еще не получает выбранное значение. И вы проповедуете хору об именовании, но я унаследовал этого маленького монстра. – TrevorGoodchild

+0

@TrevorGoodchild в вашем DDL, попробуйте установить '.ValuePrimitive (true)' и посмотреть, работает ли это. – ataravati

Смежные вопросы