我有一个Kendo Grid,我希望一次只能扩展一行进行细节编辑.最简单的方法是什么?
@(Html.Kendo().Grid<MyModel>() .Name("MyGrid") .ClientDetailTemplateId("MyTemplate") .Columns(columns => { columns.Bound(b => b.Code); columns.Bound(b => b.Name); columns.Bound(b => b.Description); ... columns.Command(cmd => { cmd.Edit(); cmd.Destroy(); }); }) .ToolBar(toolbar => toolbar.Create()) .Editable(editable => editable.Mode(GridEditMode.InLine)) .DataSource(dataSource => dataSource .Ajax() .Model(model => model.Id(a => a.Id)) .Create(create => create.Action("Create","SysMaint",new { id = Model.ProjectId })) .Read(read => read.Action("Read",new { projectId = Model.ProjectId })) .Update(update => update.Action("Update","SysMaint")) .Destroy(destroy => destroy.Action("Destroy","SysMaint")) ) ) <script id="MyTemplate" type="text/kendo-tmpl"> @(Html.Kendo().TabStrip() .Name("TabStrip_#=Id#") .SelectedIndex(0) .Items(items => { items.Add().Text("A").LoadContentFrom("MyPartialA",new { id = "#=Id#" }); items.Add().Text("B").LoadContentFrom("MyPartialB",new { id = "#=Id#" }); }) .ToClientTemplate() ) </script>
解决方法
结束这很简单.只需添加这几行.
... .Update(update => update.Action("Update","SysMaint")) ) .Events(events => events.DetailExpand("detailExpand")) ) <script type="text/javascript"> var expandedRow; function detailExpand(e) { // Only one open at a time if (expandedRow != null && expandedRow[0] != e.masterRow[0]) { var grid = $('#MyGrid').data('kendoGrid'); grid.collapseRow(expandedRow); } expandedRow = e.masterRow; } </script>
我希望这有助于某人.