【问题标题】:MVC3 Telerik Grid - How to submit all rows to controller?MVC3 Telerik Grid - 如何将所有行提交给控制器?
【发布时间】:2014-07-26 17:27:18
【问题描述】:

默认情况下,看起来 Telerik Grid for MVC3 仅将标记为“脏”的行提交给我的控制器。我需要能够将 Telerik Grid 上的所有行提交给我的控制器。换句话说,我认为我需要将所有行标记为已更改,以便网格将所有行发送到我的控制器。

我正在使用 Ajax 数据绑定,如下所示:

.DataBinding(dataBinding => dataBinding .Ajax() .Select("GetData", "ModuleAccess", new { roleId = @ViewBag.RoleId, appId = @ViewBag.AppId }) .Update("SaveBatchEditing", "ModuleAccess")

【问题讨论】:

    标签: asp.net-mvc-3 telerik


    【解决方案1】:

    我找到了答案:

    function ModuleAccessGridHasChanges() {
            var grid = $("#ModuleAccessGrid").data("tGrid");
            if (grid != null) {
                    var additionalValues = grid.data;
                    if (!$.telerik.trigger(grid.element, 'submitChanges', { values: additionalValues })) {
                        grid.sendValues($.extend({}, additionalValues), 'updateUrl', 'submitChanges');
                }
            }
        }
    

    Fiddler 显示网格的所有数据:

    【讨论】:

      【解决方案2】:
      @(Html.Telerik().Grid<BarcodeListModel>()
                              .Name("orders-grid")
                              .ClientEvents(events => events.OnDataBinding("onDataBinding"))
                              .DataKeys(keys =>
                                {
                                    keys.Add(x => x.Id);
                                 })
                              .ToolBar(commands =>
                                  {
                                      commands.SubmitChanges();
                                  })
                              .DataBinding(dataBinding =>
                                             dataBinding.Ajax()
                                              .Select("BulkEditSelect", "ProductVariant")
                                             .Update("BulkEditSaveBarcode", "ProductVariant")
                                              .Delete("DeleteBarcode", "ProductVariant")
                                           )
                              .Columns(columns =>
                              {
                                  columns.Bound(x => x.Id).ReadOnly();
                                  columns.Bound(x => x.SKU);
                                  columns.Bound(x => x.barcode);
                                  //columns.Bound(x => x.Id)
                                  //    .Template(x => Html.ActionLink(T("Admin.Common.View").Text, "DeleteBarcode", new { id = x.Id }))
                                  //    .ClientTemplate("<a href=\"DeleteBarcode/<#= Id #>\">" + "Delete" + "</a>")
                                  //    .Width(50)
                                  //    .Centered()
                                  //    .HeaderTemplate("DeleteBarcode")
                                  //    .Filterable(false)
                                  //    .Title("Delete");
                                  columns.Command(commands => commands.Delete()).Width(180);
                              })
                              .Pageable(settings => settings.PageSize(gridPageSize).Position(GridPagerPosition.Both))
                              .DataBinding(dataBinding => dataBinding.Ajax().Select("BarcodeList", "ProductVariant", Model))
                              .Editable(editing => editing.Mode(GridEditMode.InCell)) 
                              .EnableCustomBinding(true)
      
                        )
      

      像这样使用代码

      【讨论】:

      • 您的代码示例对我不起作用。它的哪一部分告诉网格在更新时将所有行发送到控制器?
      猜你喜欢
      • 1970-01-01
      • 2012-02-19
      • 1970-01-01
      • 2016-02-25
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      相关资源
      最近更新 更多