我尝试遵循剑道示例(http://demos.telerik.com/aspnet-mvc/grid/filter-menu-customization),但我显然错过了一些东西......
网格加载数据效果很好。 JavaScript 函数 costCenterNumberFilter(element);
在我放置 alert("WTF!?!?");
时执行,并显示在浏览器中...
它不会呈现成本中心编号过滤器的自动完成功能。任何帮助将不胜感激。
我检查了其他几个 SO 问题,但很少得到解答。
索引.cshtml:
@model IEnumerable<LoanFee>
@{
ViewBag.Title = "Fees";
}
@(Html.Kendo().Grid<LoanFee>(Model)
.Name("Grid")
.Columns(columns =>
{
columns.Command(cmd => cmd.Select())
.HtmlAttributes(new { style = "text-align: center;" })
.Width(100);
columns.Bound(p => p.AccountNumber)
.Width(170);
columns.Bound(p => p.CustomerName);
columns.Bound(p => p.StatusId)
.Template(@<text></text>)
.HtmlAttributes(new { @class = "status-dropdown" })
.ClientTemplate(Html.Kendo().DropDownList()
.Name("ddlStatus_#=LoanFeeId#")
.DataTextField("Name")
.DataValueField("Value")
.BindTo(Status.Items())
.Value("#=StatusId#")
.ToClientTemplate()
.ToHtmlString())
.Title("Status")
.Width(100);
columns.Bound(p => p.Approvals)
.HtmlAttributes(new { style = "text-align: center;" })
.Width(100);
columns.Bound(p => p.Amount)
.Format(Formats.CURRENCY)
.HtmlAttributes(new { style = "text-align: right;" })
.Width(120);
columns.Bound(p => p.Allocation.PrimaryOfficerName)
.Template(@<text></text>)
.ClientTemplate("#=Allocation.PrimaryOfficerNumberDashName#")
.Width(220);
columns.Bound(p => p.CostCenterNumber)
.Title("Cost Center")
.HtmlAttributes(new { style = "text-align: center;" })
.Filterable(filterable =>
{
filterable.Extra(false);
filterable.Operators(o => o.ForString(fs =>
{
fs.Clear();
fs.Equals("Equals");
}));
filterable.UI("costCenterNumberFilter");
})
.Width(100);
columns.Bound(p => p.DateEntered)
.Format(Formats.DATE)
.HtmlAttributes(new { style = "text-align: center;" })
.Width(100);
})
.Events(e => e.DataBound("initStatusDropdown"))
.Pageable()
.Filterable()
.DataSource(ds => ds
.Ajax()
.PageSize(15)
.Sort(sort => sort.Add(p => p.AccountNumber))
.Model(m =>
{
m.Id(p => p.LoanFeeId);
})
.Read(read => read.Action("Index_Read", "WorkQueue"))
)
)
<script type="text/javascript">
function initStatusDropdown(e) {
$(".status-dropdown").each(function () {
eval($(this).children("script")
.last()
.html());
})
}
function costCenterNumberFilter(element) {
element.kendoAutoComplete({
datasource: ["3200", "4200", "1000"]
});
}
</script>
WorkQueueController.cs:
using Kendo.Mvc.UI;
using Kendo.Mvc.Extensions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace CommercialIncentive.Web.Areas.Fees.Controllers
{
public class WorkQueueController : BaseController
{
public ActionResult Index()
{
return View();
}
public ActionResult Index_Read([DataSourceRequest] DataSourceRequest request)
{
var data = IocContainer.Get<ILoanFeeService>()
.ListAsQuery() // Returns IQuerable<LoanFee>
.ToDataSourceResult(request);
return Json(data);
}
}
}
最佳答案
dataSource 属性有一个小写字母...
更改:
function costCenterNumberFilter(element) {
element.kendoAutoComplete({
datasource: ["3200", "4200", "1000"]
});
}
至:
function costCenterNumberFilter(element) {
element.kendoAutoComplete({
dataSource: ["3200", "4200", "1000"]
});
}
关于javascript - Kendo MVC 网格过滤器自定义不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26597882/