gpt4 book ai didi

javascript - 如何使用下拉列表过滤 Kendo UI MVC 网格

转载 作者:行者123 更新时间:2023-11-30 07:38:33 24 4
gpt4 key购买 nike

我有一个剑道网格,它通过将下拉列表中的值推送到内置的剑道过滤器中来进行过滤。当我在文本框中键入值并进行搜索时,我可以使用相同的方法搜索网格。这是我的剑道网格和下拉菜单

 @(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>

我的 View 模型看起来像

 public class MyViewModel
{
public MyObject myObj {get;set;}
public string Column2 {get;set;}
}

上述功能在搜索字段是文本框时有效,但在我使用下拉菜单时无效。我认为这是因为我将“MyObject”的 ID 插入网格过滤器,而网格中填充了“MyObject”的名称。谁能告诉我如何解决这个问题。谢谢!!

最佳答案

据我所知,有两种方法可以处理这个问题。一种是将选定的值推送到内置的 Kendo 过滤器中,或者将值传递给 Controller ​​操作并在服务器端进行过滤。首先将下拉更改事件的选定值存储到名为“selectedDropDownValue”的对象

过滤客户端(将值推送到 kendo 过滤器)

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.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();
}

在读取调用之后,您仍然可以添加客户端过滤器,应用过滤器,然后再进行读取调用。 Controller 签名应该是这样的

 public JsonResult GetList_Read([DataSourceRequest] DataSourceRequest request, string filter)

过滤器将包含所选下拉列表的值

关于javascript - 如何使用下拉列表过滤 Kendo UI MVC 网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23836382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com