Telerik Kendo MVC Grid - 服务器绑定 - 使用默认事件处理程序

时间:2016-05-12 17:28:53

标签: c# telerik kendo-grid kendo-asp.net-mvc

我正在创建一个服务器绑定的Kendo网格,目前我想使用Telerik在其演示页面中提供的默认错误处理程序:

<script type="text/javascript">
    function error(args) {
        if (args.errors) {
            var grid = $("#grid").data("kendoGrid");
            grid.one("dataBinding", function (e) {
                e.preventDefault();   // cancel grid rebind if error occurs                                             
            });
        }
    }
</script>

网格正常工作,直到我将.Events(e => e.Error("error"))添加到数据源部分。添加此行并发布到我的测试服务器后,我尝试加载页面,并收到编译错误说明:

  

CS1660:无法将lambda表达式转换为'string'类型,因为它不是委托类型。

我搜索过并发现很多人提到与Kendo网格相关的这个特殊错误以及许多其他事情,因此它似乎与Kendo产品没有直接关系。但是,我一直无法确定错误的真正含义以及为什么我在尝试向网格添加错误处理后突然收到它。

出于好奇的考虑,我尝试将.Error()行移出数据源并将其置于同一级别。这产生了以下错误:

  

CS1061:'Kendo.Mvc.UI.Fluent.GridEventBuilder'不包含'Error'的定义,并且没有扩展方法'Error'接受'Kendo.Mvc.UI.Fluent.GridEventBuilder'类型的第一个参数可能找到(你错过了使用指令或汇编引用吗?)

网格代码:

@(Html.Kendo().Grid(Model)
.Name("grid")
.DataSource(dataSource => dataSource
    .Server()
    .Events(e => e.Error("error"))
    .Filter(filter => filter.Add(f => f.Active).IsEqualTo(true))
    .Model(model => 
        {
            model.Id(q => q.ID);
            model.Field(q => q.Active).Editable(false);
            model.Field(q => q.CreateDate).Editable(false);
            model.Field(q => q.CreatedByUser).Editable(false);
            model.Field(q => q.LastChangeDate).Editable(false);
            model.Field(q => q.LastChangedByUser).Editable(false);
            model.Field(q => q.DeleteDate).Editable(false);
            model.Field(q => q.DeletedByUser).Editable(false);                            
        })
    .PageSize(MyProduct.Core.Settings.GetSettingValueInt(MyProduct.Core.Settings.SettingsID.TableMxPageSize, 100))
    .Sort(sort => { if (Request.QueryString.Keys.Count == 0) { sort.Add("HolidayDate").Ascending(); } }) // Initial Sort
    .Create(create => create.Action("NonTradeDays_Create", "CommodityPricing"))
    .Read(read => read.Action("NonTradeDays", "CommodityPricing"))
    .Update(update => update.Action("NonTradeDays_Update", "CommodityPricing"))
    .Destroy(update => update.Action("NonTradeDays_ActiveState", "CommodityPricing"))                    
)
.ToolBar(command =>
    {
        command.Create();
    })
.Editable(edit => edit.Mode(GridEditMode.PopUp))                
.Pageable(pager => pager
    .PageSizes(new int[] { 50, 100, 250 })
    .Refresh(true)
)
.Resizable(resize => resize.Columns(true))
.Filterable(ftb => { ftb.Mode(GridFilterMode.Menu); })
.Sortable()
.Groupable()
.HtmlAttributes(new { style = "height: 800px;" })
.Scrollable()
.Columns(columns =>
    {
        columns.Command(q => { q.Edit(); q.Destroy(); })
            .Width(100);
        columns.Bound(q => q.Active)
            .Title("Active?")
            .Width(85);
        columns.Bound(q => q.HolidayDate)
            .Title("Date")
            .Width(200);
        columns.Bound(q => q.Name)
            .Template(@<text>
                @if (!User.IsInRole("manageNonTradeDays"))
                { <div class="noAdd"></div>}
                @if (!User.IsInRole("manageNonTradeDays"))
                { <div class="noEdit"></div>}
                @if (!User.IsInRole("manageNonTradeDays"))
                { <div class="noDeactivate"></div>}
                @if (item.DeleteDate != null)
                { <div class="isDeleted"></div>}
                @item.Name
                </text>)
            .Width(300);
        columns.Bound(q => q.CreateDate)
            .Width(200);
        columns.Bound(q => q.CreatedByUser)
            .Width(175);
        columns.Bound(q => q.LastChangeDate)
            .Width(200);
        columns.Bound(q => q.LastChangedByUser)
            .Width(200);
        columns.Bound(q => q.DeleteDate)
            .Width(200);
        columns.Bound(q => q.DeletedByUser)
            .Width(200);
    }
))

如果我没有提供足够的信息,请告诉我您还需要了解的其他信息。提前谢谢!

0 个答案:

没有答案