【问题标题】:Kendoui MVC Multiselect Wrapper no initial valuesKendoui MVC Multiselect Wrapper 没有初始值
【发布时间】:2013-11-01 14:07:39
【问题描述】:

尝试使用 Multiselect kendoui 小部件包装器。服务器端过滤工作正常,但我无法在小部件初始化时填充初始值。你知道我在这里做错了什么吗?

<div class="container-div grid-tab-content-pane">

@(Html.Kendo().MultiSelect()
      .Name(AMultiName)
      .DataTextField("PrettyText")
      .DataValueField("MapAbbreviation")
      .Placeholder("Edit EMR maps...")
      .Filter(FilterType.Contains)
      .MinLength(3)
      .AutoBind(false)
      .HighlightFirst(true)
      .Value(new []
          {
              new {PrettyText = "Abcdef",MapAbbreviation = "s01"},
              new {PrettyText = "2nde obn", MapAbbreviation = "asdf012"}
          })

      .DataSource(ds => ds.Read(r=>r.Action("ReadMapOptions","EmrMappingKendo", new {Area="Messaging"})).ServerFiltering(true)).MinLength(3)   
      )

顺便说一句,我正在使用版本 2013.2.918.340 的 kendoui dll

将 autobind 设置为 false 没有任何影响。

 @(Html.Kendo().MultiSelect()
      .Name(AMultiName)
      .DataTextField("PrettyText")
      .DataValueField("MapAbbreviation")
      .Placeholder("Edit EMR maps...")
      .AutoBind(true)
      .Value(new []
          {
              new {PrettyText = "Abcdef",MapAbbreviation = "s01"},
              new {PrettyText = "2nde obn", MapAbbreviation = "asdf012"}
          })

      .DataSource(ds => ds.Read(r=>r.Action("ReadMapOptions","EmrMappingKendo", new {Area="Messaging"})).ServerFiltering(true)).MinLength(3)   
      )

【问题讨论】:

    标签: c# razor kendo-ui multi-select


    【解决方案1】:

    由于某种原因,这有效。不知道为什么,但确实如此。

    @(Html.Kendo().MultiSelect()
          .Name(AMultiName)
          .DataTextField("PrettyText")
          .DataValueField("MapAbbreviation")
          .Placeholder("Edit EMR maps...")
          .Filter(FilterType.Contains).MinLength(3)
          .AutoBind(false)
          .DataSource(
            ds => ds.Read(r=>r.Action("ReadMapOptions","EmrMappingKendo", new {Area="Messaging"})))
          .Value(new List<EmrMapping>
              {
                  new EmrMapping {PrettyText = "Abcdef",MapAbbreviation = "s01"},
                  new EmrMapping {PrettyText = "2nde obn", MapAbbreviation = "asdf012"}
              })
          )
    

    看到这个链接告诉我Kendoui docs

    【讨论】:

    • 哦,我在 2013.1.319,支持延迟初始化> 2013.1.514 如您的链接所述。你说的对。为你点赞。
    【解决方案2】:

    .AutoBind(false) 是原因,我们必须设置它true 以在初始化时设置一些值。此外,.MinLength(3) 可能会限制服务器调用,希望是慎重的。

    【讨论】:

    • 不幸的是 .AutoBind 对显示初始值没有影响。请查看我的编辑(我也尝试过根本不提供该属性,都具有不显示初始值的相同行为)。
    • 我还想限制过滤仅在提供 >=3 个字符时触发,这似乎运行良好。我唯一遇到的问题是要显示初始值。
    • cobolstinks:初始化值必须在数据源上。您确定您的读取操作提供了所有这些值对吗?如果你的 json 很好,相信我你必须设置AutoBind = true,否则undefined 文本将出现在每个选项上。
    【解决方案3】:

    是的,自动绑定与在页面加载时预先选择多选值无关。

    要使用绑定的数据源预先选择多选,

    我们需要调用一个动作方法,该方法又返回一个类型为 List items = new List();

    的列表

    在 UI 方面,我们需要这样调用:

    .Value(Model.Getsources)

    这里的 Getsources 是控制器返回值列表中的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-11
      • 2019-04-20
      • 1970-01-01
      • 2012-12-14
      相关资源
      最近更新 更多