【问题标题】:MVC Kendo Grid Custom FilterMVC 剑道网格自定义过滤器
【发布时间】:2014-07-19 09:00:43
【问题描述】:

基本上,我正在寻找这个演示的 MVC 版本:

http://demos.telerik.com/kendo-ui/grid/filter-menu-customization

这是我目前拥有的:

.Columns(columns =>
        {
            columns.Bound(e => e.ID)
                .Hidden();
            columns.Bound(e => e.SearchFunctionCode)
                .Hidden();
            columns.Bound(e => e.SearchFunctionDesc)                
                .Title("Search Function")
                .Filterable( *** WHAT GOES HERE? *** )
                .HtmlAttributes(new { style = "text-align: center" })
                .HeaderHtmlAttributes(new { style = "text-align: center" });

我仍然引用 javascript,还是有其他方法?

<script type="text/javascript">
    function SearchFunctionFilter(element) {
        element.kendoDropDownList({
            dataSource: searchfunctions(),
            optionLabel: "--Select Value--"
        });
    }
</script>

【问题讨论】:

    标签: javascript asp.net-mvc telerik-grid telerik-mvc kendo-asp.net-mvc


    【解决方案1】:

    是的,我们需要在 javascript 中定义指定的过滤器函数,如下所示。

    .Columns(columns => {
            columns.Template(@<text>@item.FirstName  @item.LastName</text>)
                    .ClientTemplate("#=FirstName# #=LastName#")
                    .Title("Name");
            columns.Bound(e => e.City)
                    .Filterable(filterable => filterable.UI("cityFilter"))
                    .Width(200);
            columns.Bound(e => e.Title)
                    .Filterable(filterable => filterable.UI("titleFilter"))
                    .Width(350);   
        })    
        .Filterable(filterable => filterable
            .Extra(false)
            .Operators(operators => operators
                .ForString(str => str.Clear()
                    .StartsWith("Starts with")
                    .IsEqualTo("Is equal to")
                    .IsNotEqualTo("Is not equal to")
                ))
            )   
        .DataSource(dataSource => dataSource
            .Ajax()
            .Read(read => read.Action("FilterMenuCustomization_Read", "Grid"))
         )
    )
    
    <script type="text/javascript">
        function cityFilter(element) {
            element.kendoDropDownList({
                dataSource: {
                    transport: {
                        read: "@Url.Action("FilterMenuCustomization_Cities")"
                    }
                },
                optionLabel: "--Select Value--"
            });
        }
    
        function titleFilter(element) {
            element.kendoAutoComplete({
                dataSource: {
                    transport: {
                        read: "@Url.Action("FilterMenuCustomization_Titles")"
                    }
                }
            });
        }
    </script>
    

    看到这个

    http://demos.telerik.com/aspnet-mvc/grid/filter-menu-customization

    【讨论】:

    • 您将过滤器移至整个网格。我希望使一个特定的列可过滤。而且我想将列选项(编辑/添加时)限制为过滤器中可用的元素。我仍在研究,但我认为我需要将 UIHint 与新的编辑器模板和 Html.DropDownListFor 一起使用
    • 我认为你是对的——他们没有在他们的例子中展示下拉菜单的 UI 是如何工作的。你搞清楚了吗?
    【解决方案2】:

    Malkan 的回答应该有效。您需要做的就是在每列上设置一个单独的过滤器。只需将“可过滤”列替换为您喜欢的任何内容:

        .Filterable(filterable => filterable
        .Extra(false)
        .Operators(operators => operators
            .ForString(str => str.Clear()
                .StartsWith("Starts with")
                .IsEqualTo("Is equal to")
                .IsNotEqualTo("Is not equal to")
            ))
        )   
    

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多