javascript - Kendo MVC 网格过滤器自定义不起作用

标签 javascript jquery asp.net-mvc kendo-ui kendo-grid

我尝试遵循剑道示例(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/

相关文章:

javascript - 如何在另一个应用程序的 iframe 中包含 Angular 4 应用程序?

javascript - 在 Ajax 调用中获取解析器错误

jquery 停止并重置计数器而不重新加载页面(setInterval)

asp.net-mvc - 使用 ASP.NET MVC 在详细信息页面模板中显示数据库中的 byte[] 数组图像

asp.net-mvc - JQUERY ajax 将空值从 MVC View 传递到 Controller

javascript - Rails 中 AJAX 请求后重定向到 html 响应

javascript - 单击它时在 div 上设置一个框阴影

javascript - jQuery 从 cookie 读取国家并放入 Google 变量

javascript - 使用 "on change"回调从 jQuery 插件更新 AngularJS 模型

c# - 我怎样才能遍历所有路线?