2014-12-08 5 views
0

У меня есть окно кендо, которое я хочу заполнить в зависимости от выбора, сделанного в выпадающем списке. Я попытался обновить окно при открытии, но я can't figure out how to make that work. Меняя механизмы, мне интересно, могу ли я вместо этого отправить параметр переменной в контроллер в самом объявлении окна, а затем сделать простое window.refresh (вместо того, чтобы кодировать обновление, чтобы попасть на определенный контроллер, который не работает).Kendo Window - LoadDataFrom находит значение аргумента inline?

Я имею в виду что-то вроде этого:

@(Html.Kendo().Window() 
    .Name("EditWindow") 
    .Title("Edit Contact") 
    .LoadContentFrom("_ContactEdit", "Contacts", new { selectedContact = $("#ContactId").data("kendoComboBox").value() }) 
    .Content("Loading...") 
    .Visible(false) 
    .Draggable() 
    .Resizable() 
    .Width(400) 
    .Modal(true) 
    .Actions(actions => actions.Pin().Minimize().Maximize().Close()) 
) 

Или это:

@(Html.Kendo().Window() 
    .Name("EditWindow") 
    .Title("Edit Contact") 
    .LoadContentFrom("_ContactEdit", "Contacts", new { selectedContact = getContact() }) 
    .Content("Loading...") 
    .Visible(false) 
    .Draggable() 
    .Resizable() 
    .Width(400) 
    .Modal(true) 
    .Actions(actions => actions.Pin().Minimize().Maximize().Close()) 
) 

Очевидно ни один из них не работает, но мне интересно, если есть другой способ, чтобы заполнить в этой области?

Спасибо!

Редактировать: Добавление соответствующего кода из контроллера и окна/частичного просмотра. Мой контроллер теперь ударяется, но мое окно не вытягивает правильные данные. Есть идеи?

Окно:

@model [taking out company info].Contact 
@using Kendo.Mvc.Extensions 

@using (Html.BeginForm()) 
{ 

@Html.AntiForgeryToken() 
@Html.ValidationSummary(true) 
<fieldset id="infoForm">Hello, world. 
    @Html.HiddenFor(model => model.ContactId, new { id = "EditWindowId" }) 
     <br /> 
     <label id ="ContactNameID" style="width: 130px;">Contact Name</label> 
     <span> 
      @Html.TextBoxFor(model => model.FullName, new { type = "text", id = "EditWindowName", @class = "k-textbox form-control", style = "width: 200px; cursor:default" }) 
     </span><br /> 
    </fieldset> 
} 

Контроллер:

[HttpGet] 
    public ActionResult _ContactEdit(int selectedContact) 
    { 
     var entities = from r in dbContext.Contacts 
         where r.ContactId == selectedContact 
         select r; 
     if (entities.Any()) 
     { return PartialView(entities.First()); } 
     else 
     { return HttpNotFound("Contact does not exist."); } 
    } 

ответ

1

Вы можете использовать событие изменения вашего списка, чтобы захватить выбранное значение. После того, как вы выберете выбранное значение, вы можете программно обновить окно с помощью соответствующего действия на вашем контроллере. Например, приведенный ниже код определяет Kendo DropDownList с подпиской на событие изменения. В изменении это значение используется для построения динамического URL-адреса, и окно kendo обновляется с помощью этого URL-адреса:

<%= Html.Kendo().DropDownList() 
     .Name("dropdownlist") 
     ... 
     .Events(e => 
     { 
      e.Change("onChange") 
     }) 
%> 

<script type='text/javascript'> 
    function onChange(){ 
     var value = this.value(), 
      window = $("#EditWindow").data("kendoWindow"); 

     window.refresh({ 
      url: "/Contact/_ContactEdit?selectedContact=" + value 
     }); 
    } 
</script> 
+0

Спасибо, это на самом деле поражает мой контроллер, который является улучшением! Тем не менее, мое окно (в частичном представлении) по-прежнему не обновляется, хотя мой контроллер попадает с правильным (новым) идентификатором контакта. У вас есть идеи, почему это может быть? Я обновляю родительский элемент с частичным кодом просмотра. – okapishomapi

+0

Hm. Это действие контроллера возвращает чистый HTML? Если вы наблюдаете ответ этого звонка, что он содержит? –

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

  • Нет связанных вопросов^_^