【问题标题】:How can I implement a multiple select for filtering in Kendo Grid ASP MVC?如何在 Kendo Grid ASP MVC 中实现多选过滤?
【发布时间】:2017-06-22 08:48:52
【问题描述】:

我正在使用 2014 年的 Kendo Controls 开发应用程序(我无法访问 2017 年或 2018 年的最新版本) .在这个项目中,我有几列像这样的外键类型:

columns.ForeignKey(p => p.StatusID, (System.Collections.IEnumerable)ViewData["status"], "ID", "Name").HeaderTemplate("Status")

为了创建网格,我遵循了基本示例:

http://demos.telerik.com/aspnet-core/grid/foreignkeycolumn

对于基本实现,它的外观和工作方式符合预期,用户可以从 过滤 和 编辑 选项中的各种状态或用户中进行选择。

但是,我希望能够一次选择多个。我尝试迁移此示例,它适用于 Kendo for jQuery:

http://docs.telerik.com/kendo-ui/controls/data-management/grid/how-to/filtering/multiselect-used-for-column-filtering.html

他们在哪里实现了多选。

这应该足以满足我的需求。我尝试迁移到 ASP MVC,现在看起来像这样:

@model object

@(
 Html.Kendo().MultiSelectFor(m => m)
    .BindTo((MultiSelectList)ViewData[ViewData.TemplateInfo.GetFullHtmlFieldName("") + "_Data"])
)

基本上,我将下拉列表替换为多选,但没有任何改变,我的过滤仍然显示正常的下拉,没有多选:

也许我应该做更多的改变,但我不知道我还应该改变什么;我想知道以前是否有人经历过这种情况以及他们是如何处理的,我尝试了多个示例和代码,但是我的模板更新了,它总是下拉列表。另一个有趣的例子,但它也在 jQuery 中,我无法在 ASP MVC 中找到实现:

http://jsfiddle.net/victordscott/5kbfY/

此外,我知道自 2015 年第一季度以来我想要实现的目标:

http://demos.telerik.com/aspnet-mvc/grid/filter-multi-checkboxes

很遗憾,正如我之前解释的那样,我无法访问任何更新的版本。提前感谢您的任何想法。

【问题讨论】:

  • 所以您无法更新控件并且您没有使用 JavaScript/jQuery?.. Pros and cons using MVC wrappers vs HTML/JS widgets.对我来说(在过去 2 年都使用过两者之后),MVC 包装器感觉非常受限制,您应该真正考虑客户端实现,尤其是当您尝试将自定义应用到标准控件时。
  • 嗨@Sandman 我理解你的意思,我更喜欢 jQuery,但我的客户和团队完全使用 ASP,这就是为什么我对 ASP MVC 而不是 jQuery 有点限制。另外,我要重写很多代码,它不会是ASP中的一部分,而jQuery中只有一段的标准。

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


【解决方案1】:

不知道这个旧版本是否可用,但您可以尝试使用“EditorTemplate”

EditorTemplate 的代码:(放置在文件夹“EditorTemplates”中,将其命名为 f.e:“myeditortemplate.cshtml”)

@model object    

@(Html.Kendo().MultiSelect()
          .Name("optional")
          .AutoClose(false)
          .Placeholder("Select attendees...")
          .BindTo(new List<string>() {
              "value1",
              "value2",        
          })
    )

或者对于远程数据源:

@model object    

@(Html.Kendo().MultiSelect()
          .Name("optional")
          .AutoClose(false)
          .Placeholder("Select attendees...")
          .DataSource(source =>
          {
              source.Read(read =>
              {
                  read.Action("ReadAction", "MyController");
              });
          })
    )

然后在网格定义中:

...
..
   column.Bound(c => c.optional).EditorTemplateName("myeditortemplate");
..
..

干杯

【讨论】:

  • 嗨,不,它不起作用,我试过了。谢谢你的时间:)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多