剑道多选绑定不起作用

时间:2016-01-20 12:40:40

标签: asp.net-mvc kendo-ui kendo-asp.net-mvc

我正在为我的MVC应用程序使用kendo multiselect控件,我试图绑定多选,但它不起作用。 以下是我的HTML代码:

@(Html.Kendo().MultiSelect()
    .Name("ajaxTags")
    .Placeholder("Select cities...")
    .AutoBind(false)
    .DataTextField("CityName")
    .DataValueField("CityCode")
    .Filter(FilterType.StartsWith) 
    .BindTo(new SelectList("CityCode","CityName")) 
    .DataSource(source =>
     {
        source.Read(read =>
        {
            read.Action("GetCities", "DutyTravel"); 
        });
        source.ServerFiltering(true);                       
     })
     .HtmlAttributes(new { style = "width: 60%;" })
 )

所以,这里我使用的是AutoBind(false),所以只有当用户展开时,才会调用服务器并获取数据。

以下是我的控制器代码:

public JsonResult GetCities([DataSourceRequest] DataSourceRequest request)
{    
     List<DutyTravelPerDiemMaster> lstCities = null;
     lstCities = (List<DutyTravelPerDiemMaster>)HttpContext.Session["GetPerdiemList"];
     var lstFilteredCity = from d in lstCities
                               select new
                               {
                                   CityCode = d.CityCode,
                                   CityName = d.CityName
                               };


     return Json(lstFilteredCity.ToList().ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}

在这种方法中,我看到所有城市代码和城市名称都已填充,但未在多选中显示。

2 个答案:

答案 0 :(得分:0)

您正尝试将ServerAjax绑定在一起。假设您要进行Ajax绑定,请删除以下行:

.BindTo(new SelectList("CityCode","CityName")) 

答案 1 :(得分:0)

根据Teleriks Kendo UI演示,不需要设置bindTo属性。看一下这段代码,它是从他们的演示部分复制并粘贴的:

@(Html.Kendo().MultiSelect()
      .Name("products")
      .DataTextField("ProductName")
      .DataValueField("ProductID")
      .Placeholder("Select products...")   
      .AutoBind(false)       
      .DataSource(source => {
          source.Read(read =>
          {
              read.Action("GetProducts", "Home");
          })
          .ServerFiltering(true);
      })
)

如需了解更多信息,请访问:http://demos.telerik.com/aspnet-mvc/multiselect/serverfiltering

相关问题