2

我有将数据加载为可过滤组合框的网格,因此我还需要为该列创建带有可过滤组合框的自定义过滤器。

我创建组合框并将其分配给列过滤器 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);
        }
4

1 回答 1

3

首先,如果您执行“读取”,它不会向控制器发送任何附加值,因此在“public ActionResult GetOutletsCombo(string 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

希望你能从这些例子中解决你的问题。以防您无法在此帖子下方发表评论。我会再试一次来帮助你。

于 2014-01-22T16:43:15.393 回答