MVC 剑道网格自定义过滤器
Posted
技术标签:
【中文标题】MVC 剑道网格自定义过滤器【英文标题】:MVC Kendo Grid Custom Filter 【发布时间】: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>
【问题讨论】:
【参考方案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")
))
)
【讨论】:
以上是关于MVC 剑道网格自定义过滤器的主要内容,如果未能解决你的问题,请参考以下文章