代码之家  ›  专栏  ›  技术社区  ›  9Snick4

剑道嵌套网格名称不能为空

  •  0
  • 9Snick4  · 技术社区  · 2 年前

    我不知所措。 我正在尝试使用Kendo ui工具构建一个嵌套网格。 我有一个非常相似的网格,可以完美地工作,但我的网格中缺少一些东西,因为我不断收到“名称不能为空”的错误。

    这是我的index.cshtml

    @{
        int w1 = 150;
        int w2 = 120;
    }
    
    <style>
        .green {
            background-color: greenyellow !important;
        }
    </style>
    
    <div class="container-fluid">
        <div class="row">
            <div class="col-lg-12">
                <div class="alert alert-primary" role="alert" id="alert-box-error" style="display:none">
                    Errore !
                </div>
            </div>
        </div>
        <div class="row">
            <div class="col-lg-12">
                @(
                    Html.Kendo()
                        .Grid<ModelsExceptionsVM>()
                        .Name("Grid")
                        .HtmlAttributes(new { style = "height: 800px" })
                        .Columns(columns =>
                        {
                            columns.Bound(m => m.ExceptionId).Visible(false);
                            columns.Bound(m => m.ExceptionCode).Title("Codice").Visible(false);
                            columns.Bound(m => m.ReportCode).Title("Report").Filterable(ftb => ftb.Multi(true).Search(true)).Width(w2);//.EditorTemplateName("ReportsDropdown");
                            columns.Bound(m => m.Description).Title("Descrizione").Filterable(ftb => ftb.Multi(true).Search(true)).Width(w1);//.EditorTemplateName("SupplierDropdown");
                            columns.Command(c => c.Destroy()).Width(60);
                    })
                    .ToolBar(toolbar =>
                    {
                        toolbar.Save();
                        @*toolbar.Excel();*@
                        toolbar.Create();
                        toolbar.Search();
    
                    })
                    .Editable(editable => editable
                        .Mode(GridEditMode.InCell)
                        .DisplayDeleteConfirmation(true)
                        )
                    .Pageable(pageable => pageable
                        .Refresh(true)
                        .PageSizes(true)
                        .ButtonCount(5)
                    )
                    .Navigatable()
                    .Sortable()
                    .Filterable()
                    .Scrollable()
                    .ClientDetailTemplateId("template")
                    .Resizable(resize => resize.Columns(true))
                    .Reorderable(reorder => reorder.Columns(true))
                    .DataSource(dataSource => dataSource
                        .Ajax()
                        .PageSize(20)
                        .Batch(true)
                        .ServerOperation(false)
                       .Model(model =>
                        {
                            model.Id(x => x.ExceptionId);
                        })
                        .Read(read => read.Action("Read", "Models"))
                        .Update(update => update.Action("Update", "Models"))
                        .Create(create => create.Action("Create", "Models"))
                        .Destroy(delete => delete.Action("Delete", "Models"))
                    )
                    )
            </div>
        </div>
    </div>
    
    
    
    <script id="template" type="text/kendo-tmpl">
        @(Html.Kendo().Grid<ModelException>()
                            .Name("grid_#=ExceptionId#")
                        .Columns(columns =>
                            {
                                columns.Bound(m => m.ExceptionReportsModelId).Title("Id").Visible(false);
                                columns.Bound(o => o.Model).Title("Modello").Width(100);
                                columns.Bound(o => o.ReportValue).Title("Valore").Width(100);
                                columns.Command(c => c.Destroy()).Width(60);
                        })
                        .DataSource(dataSource => dataSource
                                 .Ajax()
                            .Batch(true)
                            .ServerOperation(false)
                                     .Read(read => read.Action("Hierarchy_ModelRead", "Models", new { ExceptionId = "#=ExceptionId#" }))
                                         .Update(update => update.Action("Hierarchy_ModelUpdate", "Models", new { ExceptionId = "#=ExceptionId#" }))
                                         .Create(create => create.Action("Hierarchy_ModelCreate", "Models", new { ExceptionId = "#=ExceptionId#" }))
                                         .Destroy(delete => delete.Action("Hierarchy_ModelDelete", "Models", new { ExceptionId = "#=ExceptionId#" }))
    @*                                 .Model(model =>
                                {
                                    model.Id(x => x.ExceptionReportsModelId);
                                })*@
                            )
                            .Editable(editable => editable
                                        .Mode(GridEditMode.InCell)
                                        .DisplayDeleteConfirmation(true)
                                )
                            .ToolBar(toolbar =>
                            {
                                toolbar.Save();
                                toolbar.Create();
    
                            })
                        .ToClientTemplate()
                )
    </script>
    
    
    <script type="text/javascript">
            function onError() {
                $("#alert-box-error")
                    .fadeIn('slow')
                    .delay(3000)
                    .fadeOut('slow');
            }
        </script>
    

    问题似乎出在模板组件(实际的嵌套网格)上,因为如果我删除它,主网格就会工作。

    型号:

     public class ModelsExceptionsVM
        {
            public Guid ExceptionId { get; set; }
            public int ExceptionCode { get;  set; }
            public string ReportCode { get;  set; }
            public string Description { get; set; }
        }
    
        public class  ModelException
        {
            public Guid ExceptionReportsModelId { get; set; }
            public string Model { get; set; }
            public string ReportValue { get; set; }
        }
    

    控制器:

      [Area("Exceptions")]
        public class ModelsController : Controller
        {
            private readonly DepartmentsContext _db;
            private readonly IConfiguration _configuration;
    
            public ModelsController(DepartmentsContext db, IConfiguration configuration)
            {
                _db = db;
                _configuration = configuration;
            }
            public IActionResult Index()
            {
                return View();
            }
    
            public async Task<IActionResult> Create([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")] IEnumerable<ModelsExceptionsVM> vMs)
            {
                if (vMs != null)
                {
                    foreach (var ex in vMs)
                    {
                        var create = new Persistence.Models.ExceptionsReports();
                        create.ReportCode = ex.ReportCode;
                        create.Description = ex.Description;
                        _db.ExceptionsReports.Add(create);
                    }
                    await _db.SaveChangesAsync();
                }
    
                return Json(vMs.ToDataSourceResult(request));
            }
    
            public async Task<ActionResult> Hierarchy_ModelCreate(Guid ExceptionId, [DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")] IEnumerable<ModelException> vMs)
            {
                if (vMs != null)
                {
                    foreach (var ex in vMs)
                    {
                        var create = new Persistence.Models.ExceptionReportsModels();
                        create.ValueForReport = ex.ReportValue;
                        create.Model = ex.Model;
                        _db.ExceptionReportsModels.Add(create);
                    }
                    await _db.SaveChangesAsync();
                }
    
                return Json(vMs.ToDataSourceResult(request));
            }
    
            public async Task<ActionResult> Read([DataSourceRequest] DataSourceRequest request)
            {
                var result = await _db.ExceptionsReports
                .OrderBy(x => x.ExceptionCode)
                .Select(x=>new ModelsExceptionsVM
                {
                    Description = x.Description,
                    ExceptionCode = x.ExceptionCode,
                    ExceptionId = x.ExceptionId,
                    ReportCode = x.ReportCode,
                })   
                .ToListAsync();
    
                return Json(result.ToDataSourceResult(request));
            }
            public async Task<ActionResult> Hierarchy_ModelRead(Guid ExceptionId, [DataSourceRequest] DataSourceRequest request)
            {
                var data = await _db.ExceptionReportsModels
                    .Where(x => x.ExceptionId == ExceptionId)
                    .Select(z=> new ModelException
                    {
                        ExceptionReportsModelId =z.ExceptionsReportsModelId,
                        Model = z.Model,
                        ReportValue = z.ValueForReport
                    })
                    .ToListAsync();
    
                return Json(data.ToDataSourceResult(request));
            }
    
            public async Task<ActionResult> Update([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")] IEnumerable<ModelsExceptionsVM> vMs)
            {
                if (vMs != null)
                {
                    foreach (var ex in vMs)
                    {
                        var update = await _db.ExceptionsReports.FirstOrDefaultAsync(t => ex.ExceptionCode == t.ExceptionCode);
                        update.ReportCode = ex.ReportCode;
                        update.Description = ex.Description;
                    }
                    await _db.SaveChangesAsync();
                }
    
                return Json(vMs.ToDataSourceResult(request));
            }
    
            public async Task<ActionResult> Hierarchy_ModelUpdate(Guid ExceptionId, [DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")] IEnumerable<ModelException> vMs)
            {
                if (vMs != null)
                {
                    foreach (var ex in vMs)
                    {
                        var update = await _db.ExceptionReportsModels.FirstOrDefaultAsync(t => ex.ExceptionReportsModelId == t.ExceptionsReportsModelId);
                        update.Model = ex.Model;
                        update.ValueForReport = ex.ReportValue;
                    }
                    await _db.SaveChangesAsync();
                }
    
                return Json(vMs.ToDataSourceResult(request));
            }
            public async Task<ActionResult> Delete([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")] IEnumerable<ModelsExceptionsVM> vMs)
            {
                if (vMs != null)
                {
                    foreach (ModelsExceptionsVM vM in vMs)
                    {
    
                        var dvME = await _db.ExceptionsReports.FirstOrDefaultAsync(t => t.ExceptionCode == vM.ExceptionCode);
                        if (dvME != null)
                        {
                            _db.ExceptionsReports.Remove(dvME);
                        }
                    }
                    await _db.SaveChangesAsync();
                }
                return Json(vMs.ToDataSourceResult(request));
            }
            public async Task<ActionResult> Hierarchy_ModelDelete(Guid ExceptionId, [DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")] IEnumerable<ModelException> vMs)
            {
                if (vMs != null)
                {
                    foreach (ModelException vM in vMs)
                    {
    
                        var dvME = await _db.ExceptionReportsModels.FirstOrDefaultAsync(t => t.ExceptionsReportsModelId == vM.ExceptionReportsModelId);
                        if (dvME != null)
                        {
                            _db.ExceptionReportsModels.Remove(dvME);
                        }
                    }
                    await _db.SaveChangesAsync();
                }
                return Json(vMs.ToDataSourceResult(request));
            }
        }
    

    我试过对几乎所有内容进行注释和取消注释,但都无济于事。正在重命名模板,正在更改模型。。。我会错过什么? 提前谢谢。

    EDIT:我已经注释了嵌套网格的所有可编辑部分(因此列中的.editable()函数、Destroy()函数和工具栏中的保存/创建函数),现在工作正常。但我确实需要编辑部分,那有什么用呢?

    0 回复  |  直到 2 年前
    推荐文章