2014-12-08 6 views
0

드롭 다운에서 선택한 항목에 따라 채우기를 원하는 검도 창이 있습니다. 나는 열린 창을 새로 고쳐 봤지만, 나는 can't figure out how to make that work. 기어 변경, 대신 변수를 매개 변수를 창 선언 자체 내에서 컨트롤러에 보낼 수 있는지, 그리고 간단한 window.refresh (작동하지 않는 특정 컨트롤러를 누르기 위해 새로 고침을 코딩하는 대신)를 수행 할 수 있는지 궁금합니다.검도 창 - LoadDataFrom은 인수 값을 인라인으로 찾습니다.

나는 이런 식으로 뭔가 의미 :

@(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

당신이 선택한 값을 잡기 위해 당신의 드롭 다운 목록의 변경 이벤트를 활용할 수 있습니다. 선택한 값을 얻으면 컨트롤러에서 적절한 동작을 사용하여 프로그래밍 방식으로 창을 새로 고칠 수 있습니다. 예를 들어, 아래 코드는 change 이벤트에 대한 subscription을 사용하여 Kendo DropDownList를 정의합니다. 변경 사항에서이 값은 동적 URL을 작성하는 데 사용되며 검도 창이 해당 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

감사합니다. 실제로이 기능이 개선 된 컨트롤러입니다! 그러나 내 컨트롤러가 올바른 (새) 연락처 ID로 공격을 받고 있음에도 불구하고 내 창 (부분보기)은 여전히 ​​업데이트되지 않습니다. 왜 이런 일이 일어날 지 아십니까? 부모님이 부분보기 코드로 업데이트 중입니다. – okapishomapi

+0

흠. 컨트롤러 액션이 순수 HTML을 반환합니까? 그 호출의 응답을 관찰하면 그 호출에 포함 된 내용은 무엇입니까? –