2017-04-12 10 views
0

검도 드롭 다운의 계단식 기능을 구현했습니다. 정보를 저장하는 동안 내보기 모델에서 콤보의 가치를 얻을 수 없습니다. 내가 name 속성에 주석을 달면 값을 얻지 만 계단식 기능이 작동하려면 name 속성이 필요합니다. jquery를 사용하여 모델 값을 설정했지만 오류가 발생하는 문제를 해결하려고했습니다. 누군가이 문제를 해결하는 방법을 말해 줄 수 있습니까?콤보 세트의 값을 뷰 모델로 가져올 수 없습니다.

판매 조직 콤보

<div class="form-group"> 
      @Html.LabelFor(model => model.Company, htmlAttributes: new { @class = "control-label col-md-4" }) 
      <div class="col-md-6"> 
       <div class="editor-field"> 
        @(Html.Kendo().ComboBoxFor(model => model.CountryCode) 
    .Name("SalesOrganisation") 
    .HtmlAttributes(new { style = "width:100%" }) 
    .DataTextField("CompanyCodeCompany") 
    .DataValueField("CountryCode") 
    .Filter("contains") 
    .MinLength(3) 
    .DataSource(dataSource => dataSource 
    .Read(read => read.Action("RequestHeader_SalesOrganisation", "Request").Type(HttpVerbs.Post)) 
    .ServerFiltering(true) 
    ) 

        ) 
       </div> 
       @Html.ValidationMessageFor(model => model.Company, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

영업 사무실 콤보

<div class="form-group"> 
        @Html.LabelFor(model => model.SalesOffice, htmlAttributes: new { @class = "control-label col-md-4" }) 
        <div class="col-md-6"> 
         <div class="editor-field"> 
          @(Html.Kendo().ComboBoxFor(model => model.SalesOfficeID) 
      // .Name("SalesOffice") 
      .HtmlAttributes(new { style = "width:100%" }) 
      .DataTextField("SalesOffice") 
      .DataValueField("SalesOfficeID") 
      .AutoBind(false) 
      .Value("") 
      .DataSource(dataSource => dataSource 
       .Read(read => 
       { 
        read.Action("RequestHeader_SalesOffice", "Request") 
         .Type(HttpVerbs.Post) 
         .Data("GetFilterOption"); 
       }).ServerFiltering(true) 
       ).CascadeFrom("SalesOrganisation").Filter("contains") 

          ) 
         </div> 
         @Html.ValidationMessageFor(model => model.SalesOffice, "", new { @class = "text-danger" }) 
        </div> 
       </div> 

자바 스크립트 기능을 계단식 작동하는

function GetFilterOption() { 

     return { 
      id: $('#SalesOrganisation').val() 
     } 

    } 
,

자바 스크립트 - 당신이 .ComboBoxFor를 사용하는 경우

function GetFilterOption() { 
     var countryCode = $('#SalesOrganisation').val(); 
     var model = $('#SalesOrganisation').data('kendoComboBox'); 
     model.value = countryCode; 
     return id = countryCode; 
    } 

답변

0

는(), 당신은() .name을 사용하지 말아야 작동 나던 모델을 설정하려고합니다.

당신이 .ComboBoxFor를 사용

은 (m => m.FieldName) 다음 ID/이름 속성은 검도의 면도기 도우미의 구현 및 일치 모델 필드의 이름을 "필드 명"으로 설정됩니다.

당신이 다음 .NAME ("SomeOtherFieldName")를 사용하는 경우에는 ID/이름 속성을 "SomeOtherFieldName"로 변경하여 더 이상는 더 이상 가치를 얻을 수없는 이유는 모델의 필드 이름과 일치 .

당신이하고 싶은 하지 사용 .name을()하고 .CascadeFrom (설정) 적절하게, 즉

@(Html.Kendo().ComboBoxFor(model => model.CountryCode) 
.... 

@(Html.Kendo().ComboBoxFor(model => model.SalesOfficeID) 
    .CascadeFrom("CountryCode") 

function GetFilterOption() { 
    return { 
     id: $('#CountryCode').val() 
    } 
} 
+0

네 작품을하지만이 콤보를 기반으로 필터링하는 또 다른 콤보가 '텍스트 필드. 나는 무엇을해야합니까? function GetFilterOption1() { return {id : $ ('[name = "SalesOrganisation"]') 데이터 ("kendoComboBox"). text(). split ('-') [0] } } – Tom

+0

나는 다른 필터 옵션에 대해 국가 코드를 지정했는데 작동하는 것처럼 보였습니다. 그 올바른 방법입니다 – Tom

+0

예, XXXXFor() 면도기 도우미를 사용할 때 ViewModel 필드의 이름 인 단일 및 일관된 이름으로 입력/요소/위젯을 참조해야합니다. –