我有网格,它会将数据加载为可过滤的组合框,所以我需要使用可过滤的组合框为此列创建自定义过滤器。
我创建了组合框并将其分配给列过滤器UI。我的问题是当组合框从控制器读取数据时,它不会将过滤器文本发送到控制器。
<script type="text/javascript">
function outletFilter(element) {
debugger;
element.kendoComboBox({
dataTextField: "OutletNameE",
dataValueField: "OutletID",
autoBind: false,
minLength: 1,
dataSource: {
serverFiltering: true,
transport: {
read: "@Url.Action("GetOutletsCombo")"
}
},
optionLabel: "--Select Value--"
});
}
</script>
@(Html.Kendo().Grid<Spine.ERP.ViewModel.AccountReceivableOutletViewModel>()
.Name("ARDetails_OutletGrid")
.Columns(columns =>
{
columns.Bound(p => p.AccountReceivableID).Hidden();
columns.Bound(p => p.AccountReceivableOutletID);
columns.Bound("Outlet.OutletName")
.EditorTemplateName("OutletForeignKeyEditor")
.ClientTemplate("<a>#=OutletID ##=OutletID? '-' : ' ' ##=OutletID ?
Outlet.OutletName : ' ' #</a>")
.Filterable(filter => filter.UI("outletFilter"));
})
这是我的控制器功能
public ActionResult GetOutletsCombo(string text)
{
if (text == null)
text = "";
var result = new List<OutletViewModel>();
var Outlets = outletRepository.FilterOnID("Outlet", new string[] { "OutletID", "OutletNameE" }, text).ToList();
result = (from outlet in Outlets
select new OutletViewModel
{
OutletID = outlet.OutletID,
OutletNameE = outlet.OutletNameE,
OutletNameA = outlet.OutletNameA
}).ToList();
return Json(result, JsonRequestBehavior.AllowGet);
}
答案 0 :(得分:3)
首先,如果执行“读取”,它不会向控制器发送任何其他值,因此在“public ActionResult GetOutletsCombo(string text)”中,您不会在“text”中获得任何值。
对于服务器过滤,您可以在下一页上看到kendo的演示
http://demos.kendoui.com/web/combobox/serverfiltering.html
就我的问题而言,你想要做一个剑道网格,在那里你想要一个组合框来过滤网格中的数据。在这种情况下,您可以在Kendo的网站上查看类似的演示
http://demos.kendoui.com/web/grid/toolbar-template.html
对于过滤器菜单,您可以在ASP.NET MVC
下的kendo上查看http://demos.kendoui.com/web/grid/filter-menu-customization.html
希望您能从这些示例中解决您的问题。万一你不能在这篇文章下面发表评论。我会再次尝试帮助你。