2015-04-29 74 views
0

無法將數據加載到kendo下拉列表。它從後端獲取數據,但列表爲空。後端的樣子:Kendo ui網格下拉編輯器不會加載數據

[HttpPost] 
    public ActionResult GetCities(DataSourceRequest command) 
    { 
     var cityModel = _uow.Cities.GetAll().ToList(); 


     var gridModel = new DataSourceResult 
     { 
      Data = cityModel.Select(PrepareCityModelForList), 
      Total = cityModel.Count 
     }; 

     return Json(gridModel); 
    } 

前端

  schema: { 
       data: "Data", 
       total: "Total", 
       errors: "Errors", 
       model: { 
        id: "Id", 
        fields: { 
         Name: { editable: true, type: "string" }, 
         City: { defaultValue: { CityId: 0, CityName: "Select City" } }, 
         Address: { editable: true, type: "string" }, 
         Tel: { editable: true, type: "string" }, 
         Fax: { editable: true, type: "string" }, 

        } 
       } 
      }, 
      ...... 
     columns: [... 
     { 
      field: "City.Name", 
      title: "City", 
      editor: cityDropDownEditor, 
      template: "#=City.CityName#", 
      width: 200 
     } 
.... 


function cityDropDownEditor(container, options) { 
    $('<input required data-text-field="CityName" data-value-field="CityId" data-bind="value:' + options.field + '"/>') 
     .appendTo(container) 
     .kendoDropDownList({ 
      autoBind: false, 
      dataSource: { 
       transport: { 
        read: 
        { 
         url: "@Html.Raw(Url.Action("GetCities", "Contact"))", 
         type: "POST", 
         dataType: "json" 
        } 
       } 
      } 
     }); 
} 

城市模型CITYNAME(串),CityId(int)和CityPostalCode(串)領域。在控制檯的唯一錯誤是 「遺漏的類型錯誤:e.slice是不是一個函數」

UPD *代碼PrepareCityModelForList

protected virtual CompanyCityModel PrepareCityModelForList(City city) 
    { 

     return new CompanyCityModel() 
     { 
      CityId = city.Id, 
      CityName = city.Name, 
      PostalCode = city.PostalCode 
     }; 
    } 

UPD *:返回的JSON

{"ExtraData":null,"Data":[{"CityId":3,"CityName":"Minsk","PostalCode":"220000"},{"CityId":4,"CityName":"Brest","PostalCode":"224000"},{"CityId":5,"CityName":"Vitebsk","PostalCode":"210000"},{"CityId":6,"CityName":"Gomel","PostalCode":"246000"}],"Errors":null,"Total":4} 
+0

模型是否也有「Id」字段?正如你在kendo模式中所定義的那樣。可能不是問題,但也許值得一看。另外,你可以包含'PrepareCityModelForList'方法。 –

+0

已更新。 Id字段用於主模型 - 這不是城市模型 - 城市是主模型的屬性 –

+0

啊,是的,我的不好。嘗試使用'field:「City.CityName」'而不是'City.Name'作爲列定義... –

回答

0

的問題是在json,那是由ajax傳遞的。你必須確保你的json很簡單,例如:

 {[ 
      {"CityId":3,"CityName":"Minsk","PostalCode":"220000"}, 
      "CityId":4,"CityName":"Brest","PostalCode":"224000"}, 
      "CityId":5,"CityName":"Vitebsk","PostalCode":"210000"}, 
      "CityId":6,"CityName":"Gomel","PostalCode":"246000"} 
     ]}