如何更改Kendo MVC网格的编辑命令模板?

时间:2016-05-20 17:44:12

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

我正在使用Kendo UI for ASP.NET MVC。我有网格编辑命令。编辑命令的默认外观是“按钮”,我想将其更改为链接。但是命令没有Template()方法。那么如何更改编辑命令按钮以进行链接?

Telerik可以选择按照定义here创建自己的自定义命令。但我的网格配置为使用GridEditMode.Popup,它与内置的编辑命令配合使用。如果我创建自定义命令然后我想我必须连线弹出窗口&其他一切。

我只是想改变“按钮”来链接?

 @(Html.Kendo().Grid<UI.Models.GridVM>()
        .Name("Grid")
        .Columns(columns =>
        {
            columns.Bound(p => p.CampaignID)                    
            columns.Bound(p => p.CampaignStatus);  
            columns.Command(command => command.Edit().Text("Edit Me")); // How do i change this to link??
        })            
        .Editable(editable => editable
            .Mode(GridEditMode.PopUp)
            .TemplateName("CampaignEdit")
            .Window(w =>
            {
                w.Width(400);
                w.Title("Edit Details");
            }))
        .Filterable()
        .Pageable()
        .Navigatable()
        .Sortable()                      
        .DataSource(dataSource => dataSource
            .Ajax()
            .ServerOperation(false)
            .PageSize(20)
            .Model(model => model.Id(p => p.CampaignID))
            .Read(read => read.Action("GetCampaigns", "Home"))
            .Update(update => update.Action("UpdateCampaign", "Home"))
        )            
    )

UPDATE1
@Steve Greene谢谢。您的方法确实适用于主网格。但我也有儿童细节网格,它有编辑链接。该方法不适用于细节网格。剑道引发错误。
我认为我们必须转义模板表达式,以便在子/详细信息上下文中进行评估。但我不确定语法是什么

 @(Html.Kendo().Grid<UI.Models.GridVM>()
    .Name("Grid")
    .Columns(columns =>
    {
        columns.Bound(p => p.CampaignID)                    
        columns.Bound(p => p.CampaignStatus);  
        columns.Template(@<text></text>)
               .ClientTemplate(@"<a class=""k-grid-edit"" href=""\#"">Edit Master</a>"); 
        //Worked in master grid
    })            
    .Editable(editable => editable
        .Mode(GridEditMode.PopUp)
        .TemplateName("CampaignEdit")
        .Window(w =>
        {
            w.Width(400);
            w.Title("Edit Details");
        }))
    .Filterable()
    .Pageable()
    .Navigatable()
    .Sortable()                      
    .DataSource(dataSource => dataSource
        .Ajax()
        .ServerOperation(false)
        .PageSize(20)
        .Model(model => model.Id(p => p.CampaignID))
        .Read(read => read.Action("GetCampaigns", "Home"))
        .Update(update => update.Action("UpdateCampaign", "Home"))
    )
    .ClientDetailTemplateId("detailtemplate")       
)
<script id="detailtemplate" type="text/kendo-tmpl">
@(Html.Kendo().Grid<UI.Models.DetailGridVM>()
        .Name("detailgrid_#=CampaignID#")
        .Columns(columns =>
        {
            columns.Bound(o => o.CampaignDetailID);             
            columns.Bound(o => o.Notes);                
            columns.Bound(o => o.CreatedBy);
            columns.Template(@<text></text>)
                   .ClientTemplate(@"<a class=""k-grid-edit"" href=""\#"">Edit Detail</a>"); 
            // Does not work in detail grid
        })
        .DataSource(dataSource => dataSource
            .Ajax()
            .PageSize(5)
            .Read(read => read.Action("GetCampaignDetails", "Home", new { campaignID = "#=CampaignID#" }))
            .Update(update => update.Action("UpdateCampaignDetails", "Home"))
            .Model(model => model.Id(m => m.CampaignDetailID))
        )
        .Pageable()
        .Sortable()
        .ToClientTemplate())
 </script>

2 个答案:

答案 0 :(得分:5)

使用具有k-grid-edit类的列模板(使用k-grid-delete进行销毁):

    .Columns(columns =>
    {
        columns.Bound(p => p.CampaignID)                    
        columns.Bound(p => p.CampaignStatus);  
        columns.Template(@<text></text>).ClientTemplate(@"<a class=""k-grid-edit"" href=""\#"">Edit</a>").Width(30);
        columns.Template(@<text></text>).ClientTemplate(@"<a class=""k-grid-delete"" href=""\#"">Delete</a>").Width(30);
    })   

或小按钮和引导程序:

    column.Template(@<text></text>).ClientTemplate(@"<a class=""btn btn-info btn-xs k-grid-edit"" href=""\#"">Edit</a>").Width(30);
    column.Template(@<text></text>).ClientTemplate(@"<a class=""btn btn-danger btn-xs k-grid-delete"" href=""\#"">Delete</a>").Width(30);

答案 1 :(得分:0)

例如,您只能使用css执行此操作:

td[role=gridcell] > a.k-button.k-button-icontext.k-grid-edit :hover {
    cursor: pointer;
}
td[role=gridcell] > a.k-button.k-button-icontext.k-grid-edit {
    -webkit-box-shadow: none !important;
    box-shadow: none !important;
    background: transparent;
    border: none;
}