如何在Kendo UI Grid自定义弹出模板中显示值

时间:2013-12-12 13:01:57

标签: asp.net-mvc-4 grid kendo-ui kendo-grid kendo-asp.net-mvc

我有一个简单的Kendo UI网格的MVC视图:

@(Html.Kendo().Grid(Model.Positions)    
    .Name("Test")
    .Columns(columns =>
    {
        columns.Bound(p => p.Name);                
        columns.Command(command => { command.Edit(); });        
    })       
    .Editable(ed=>ed.Mode(GridEditMode.PopUp).TemplateName("Position").Window(w => w.Width(600)).Window(w => w.Title("Byrå")))

    .DataSource(dataSource => dataSource
        .Ajax()
        .PageSize(10)
        .Model(model => model.Id(p => p.Id))      
        .Update(update => update.Action("Update", "Office"))        
        .Read(read => read.Action("Get", "Office")
     )
   )
 )

在Shared / EditorTemplate下,我在Shared / EditorTemplates下添加了Postion.cshtml。如果我使用例如:

,编辑打开它应该是一切都很好
@Html.TextBoxFor(model => model.Name)

但是,我不能使用LabelFor,因为它会显示属性的名称而不是值。它似乎也是网格将弹出窗口与网格一起实例化。单击“编辑”时,TextBoxFor中的值会更新,但如果我使用@ Model.Name则不会。它总是空的。

我还尝试并隐藏了一些字段,具体取决于其中一个字段的值,但由于我不能使用@Model它不会工作。

任何人都知道怎么解决这个问题?

1 个答案:

答案 0 :(得分:0)

剑道对我的回答就是这样的。我还没有在我的案例中工作,但它可能对你有所帮助。如果您想出一个与此问题不同的解决方案,您可以分享吗?

在自定义编辑器中。

文本/ JavaScript的

function sendName() {
    var grid = $('.k-grid').data().kendoGrid;
    var tr = grid.tbody.find('.k-grid-edit-row');
    var model = grid.dataItem(tr);
    var result = {
        name: model.Name
    };
    return result;
}

他们正在检查html并首先分配网格,然后选择网格的选定行,然后将行的字段映射到网格的列。