如何使用下拉列表过滤剑道UI MVC网格
How to filter a Kendo UI MVC grid using a dropdown list
我有一个剑道网格,通过将值从下拉列表推入内置的剑道过滤器来过滤。当我在文本框中输入值并进行搜索时,我可以使用相同的方法搜索网格。这是我的剑道网格和下拉菜单
@(Html.Kendo().DropDownListFor(model => model.MyObject.ID)
.Name("Objects").DataTextField("Value").DataValueField("Key")
.BindTo(@Model.MyObjectList).AutoBind(true)
.HtmlAttributes(new { id = "selectedObject" })
<a class="button" onclick="searchGrid()" id="search">Search</a>
@(Html.Kendo().Grid<MyViewModel>()
.Name("MyGrid").HtmlAttributes(new { style = " overflow-x:scroll;" })
.Columns(columns =>
{
columns.Bound(a => a.MyObject.Name).Title("Field 1");
columns.Bound(a => a.Column2).Title("Field 2");
}
.Pageable(page => page.PageSizes(true))
.Scrollable(src => src.Height("auto"))
.Sortable()
.Filterable()
.Reorderable(reorder => reorder.Columns(true))
.ColumnMenu()
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(10)
.Read(read => read.Action("GetList_Read", "MyController"))
)
)
<script>
function searchGrid()
{
selectedObject = $("#selectedObject").data("kendoDropDownList");
gridFilter = = { filters: [] };
if ($.trim(selectedRecipient).length > 0) {
gridListFilter.filters.push({ field: "Field 1", operator: "eq", value: selectedObject});
}
}
var grid = $("#MyGrid").data("kendoGrid");
grid.dataSource.filter(gridFilter);
</script>
我的视图模型看起来像
public class MyViewModel
{
public MyObject myObj {get;set;}
public string Column2 {get;set;}
}
上面的函数工作时,搜索字段是一个文本框,但它不工作,当我使用下拉。我认为这是因为我将"MyObject"的id推入网格过滤器,而网格则填充了"MyObject"的名称。谁能告诉我怎么修这个。谢谢你! !
我发现有两种方法可以处理这个问题。一种方法是将选定的值推入内置的Kendo Filters,或者将值传递给控制器操作并在服务器端进行过滤。首先将下拉更改事件的选定值存储到一个名为'selectedDropDownValue'的对象
过滤客户端(将值推送到剑道过滤器)
function searchGrid()
{
var gridListFilter = { filters: [] };
var gridDataSource = $("#MyGrid").data("kendoGrid").dataSource;
gridListFilter.logic = "and"; // a different logic 'or' can be selected
if ($.trim(selectedDropDownValue).length > 0) {
gridListFilter.filters.push({ field: "MyObject.MyObjectID", operator: "eq", value: parseInt(selectedDropDownValue) });
}
gridDataSource.filter(gridListFilter);
gridDataSource.read();
}
这将下拉列表的选定值推送到内置的剑道网格过滤器
过滤端
通过添加数据编辑DataSource read行
.Read(read => read.Action("GetApportionmentList_Read", "Apportionment").Data("AddFilter"))
然后创建一个javascript函数来添加过滤器
function AddFilter()
{
return {filter:selectedDropDownValue};
}
然后在搜索网格JS函数中以
开始function searchGrid()
{
var gridListFilter = { filters: [] };
var gridDataSource = $("#MyGrid").data("kendoGrid").dataSource;
gridDataSource.read();
}
在read调用之后,您仍然可以添加客户端筛选器,应用该筛选器,然后进行读召回。控制器签名应该如下所示
public JsonResult GetList_Read([DataSourceRequest] DataSourceRequest request, string filter)
过滤器将包含所选
在您的过滤器中设置
value: selectedObject
但是selectedObject
是实际的Kendo DropDownList小部件实例。您需要使用.value()
或.text()
selectedObject = $("#selectedObject").data("kendoDropDownList").value();
相关文章:
- 将模型从Kendo Mvc UI网格传递到javascript函数
- MVC 分部视图中的 JQuery UI 自动完成功能只能工作一次
- 如何使用Kendo UI mvc扩展显示网格页脚值
- 什么's是在Microsoft之间共享本地化ui字符串的规范方法'MVC和Javascript
- Spring MVC 框架(从 UI 到完成事务的过程)
- JQuery UI 自动完成 ASP MVC Razor 上的多个文本框
- 如何使用角度模块“ui-route”在指令中查找模板URL,而不会在MVC .NET上出现错误
- 使用 ajax (MVC) 的 JQuery UI 可折叠高度问题
- 如何使用JavaScript,React,Angular,Vue或 ASP.NET MVC隐藏Kendo UI网格列
- Kendo UI ASP.NET MVC-网格-使用JavaScript隐藏复选框
- 使用spring mvc和apache pdf框从UI下载的空和破碎的pdf文件
- Angular ui router and Spring Mvc
- AngularJS, UI bootstrap, MVC Frontend - data-ng-click不起作用
- 在Jquery UI之前加载Bootstrap.Net MVC 4/热毛巾模板
- Angular ui-router给MVC控制器的隐藏参数
- 剑道UI网格服务器端分组(没有MVC)
- 剑道UI:通过asp.net mvc实现网格的本地化
- 如何在ASP MVC页面中手动排序剑道UI网格
- Telerik MVC UI -网格更新事件
- 如何使用下拉列表过滤剑道UI MVC网格