C# 带子网格的剑道网格ClientTemplate错误的模板

C# 带子网格的剑道网格ClientTemplate错误的模板,c#,kendo-ui,kendo-ui-grid,C#,Kendo Ui,Kendo Ui Grid,如果单击父网格项,则子网格将展开。如果子网格模型的ItemState未被批准,我想显示一个按钮来删除该行。但我得到“未捕获错误:无效模板” 我试过: columns.Bound(c => c.Id).ClientTemplate( "# if (ItemState != 1 ) { #" + "<button type='button' class='btn btn-delete' onclick=\"deleteChildBtn('\\#: Id \\#')\">&l

如果单击父网格项,则子网格将展开。如果子网格模型的ItemState未被批准,我想显示一个按钮来删除该行。但我得到“未捕获错误:无效模板”

我试过:

columns.Bound(c => c.Id).ClientTemplate(
 "# if (ItemState != 1 ) { #" +
 "<button type='button' class='btn btn-delete' onclick=\"deleteChildBtn('\\#: 
 Id \\#')\"><span class='fa fa-trash'></span></button>" +
 "# } #"
);
columns.Bound(c=>c.Id).ClientTemplate(
“#如果(ItemState!=1){#”+
"" +
"# } #"
);
未定义“ItemState”。因为使用了来自父级的模型,并且那里的ItemState不存在

columns.Bound(c => c.Id).ClientTemplate(
 "# if (\\#: data.ItemState \\# != 1 ) { #" +
 "<button type='button' class='btn btn-delete' onclick=\"deleteChildBtn('\\#: 
 Id \\#')\"><span class='fa fa-trash'></span></button>" +
 "# } #"
);
columns.Bound(c=>c.Id).ClientTemplate(
“#如果(\\\\:data.ItemState\\\\\!=1){”+
"" +
"# } #"
);
columns.Bound(c=>c.Id).ClientTemplate(
“#如果(\\\\\:ItemState\\\\\\\!=1){”+
"" +
"# } #"
);
获取了“无效模板”

另一种尝试是使用排除的javascript函数

columns.Bound(c => c.Bound).ClientTemplate("\\#: test(data) \\#").Encoded(false);

....
function test(data) {
   if (data.ItemState != 1) {
     return kendo.format("<button type='button' class='btn btn-delete' 
     onclick='deleteChildBtn({0})'><span class='fa fa-trash'></span> 
     </button>", data.Id);
    } else {
      return kendo.format("");
    } 
}

columns.Bound(c=>c.Bound).ClientTemplate(“\\\\\\\\:测试(数据)\\\\\”)。编码(false);
....
功能测试(数据){
如果(data.ItemState!=1){
返回剑道格式(“
“,data.Id);
}否则{
返回kendo.format(“”);
} 
}
它起作用了,我得到了我需要的价值观。但是telerik网格没有呈现html。因此,它只显示原始html

父und子网格的完整代码

@(Html.Kendo().Grid<Models.SalesPosition>()
            .Name("grid")
            .Columns(columns =>
            {
                columns.Template(@<p></p>).HtmlAttributes(new { style = "width:5px; text-align:left;" }).HeaderHtmlAttributes(new { style = "width:5px;" });
                columns.Bound(c => c.PositionNumber);
                columns.Bound(c => c.ItemDescription);
                columns.Bound(c => c.ItemCode);
                columns.Bound(c => c.DrawingNumberIndex)
                columns.Bound(c => c.SalesUnit).ClientTemplate("#: OrderedQuantity # #: SalesUnit #");
                if (User.IsInRole(ActiveDirectoryGroups.Admin))
                {
                    columns.Bound(c => c.Id).ClientTemplate(
                        "<button type='button' class='btn btn-delete' onclick=\"deleteBtn('#: Id #')\"><span class='fa fa-trash'></span></button>"
                        ).Width(80).Title("");

                    columns.Bound(c => c.Id).ClientTemplate(
                    "<button type='button' class='btn btn-add' onclick=\"callAddChildItemModal('#: Id #')\"><span class='fa fa-plus'></span></button>"
                    ).Width(80).Title("");
                }
            })
            .AutoBind(true)
            .DataSource(ds =>
                ds.Ajax()
                .PageSize(50)
                .Read(read => read.Action("GetWhereSalesOrder", "SalesPosition", new { salesOrder = ViewBag.Item.SalesOrder1 }))
                .ServerOperation(false)
            )
            .Scrollable(a => a.Height("auto"))
            .ClientDetailTemplateId("templateArticle")
            .Selectable()
            .Pageable(p => p.Refresh(false).Numeric(true).Enabled(true))
            .Events(events => events.Change("toggleRow").DataBound("setSalesPositionColor"))
)

// Subgrid
<script id="templateArticle" type="text/kendo-tmpl">
    @(Html.Kendo().Grid<Models.Item>()
        .Name("grid#=Id#")
        .Columns(columns =>
        {
            columns.Template(@<p></p>).HtmlAttributes(new { style = "width:5px; text-align:left;" }).HeaderHtmlAttributes(new { style = "width:5px;" });
                    columns.Bound(c => c.ItemDescription);
                    columns.Bound(c => c.ItemCode);
                    columns.Bound(c => c.DrawingNumberIndex);
                    columns.Bound(c => c.Amount);
                    columns.Bound(c => c.Size);
                    columns.Bound(c => c.Id).ClientTemplate(
                       "# if (\\#: data.ItemState \\# == 1) { #" +
                        "<button type='button' class='btn btn-delete' onclick=\"deleteChildBtn('\\#: Id \\#')\"><span class='fa fa-trash'></span></button>" +
 "# } #").Width(80).Title("");
            }
        })
              .AutoBind(true)
              .DataSource(ds =>
                   ds.Ajax()
                        .Read(read => read.Action("GetWhereSalesPositionId", "SalesPositionItem").Data("{ id: '#: Id #' # if (cbhShowOnlyInCrate.checked) { # , onlyInCrate: true # } #}"))
                         .ServerOperation(false)
                         )
                .Events(events => events.DataBound("articleDataBound"))
                .ToClientTemplate()
    )
@(Html.Kendo().Grid())
.名称(“网格”)
.列(列=>
{
columns.Template(@

).HtmlAttributes(新的{style=“width:5px;text align:left;“}”).HeaderHtmlAttributes(新的{style=“width:5px;“}); columns.Bound(c=>c.PositionNumber); columns.Bound(c=>c.itemsdescription); columns.Bound(c=>c.ItemCode); columns.Bound(c=>c.DrawingNumberIndex) columns.Bound(c=>c.SalesUnit).ClientTemplate(“#:OrderedQuantity#:SalesUnit#”); if(User.IsInRole(ActiveDirectoryGroups.Admin)) { columns.Bound(c=>c.Id).ClientTemplate( "" ).宽度(80)。标题(“”); columns.Bound(c=>c.Id).ClientTemplate( "" ).宽度(80)。标题(“”); } }) .AutoBind(真) .DataSource(ds=> ds.Ajax() .页面大小(50) .Read(Read=>Read.Action(“GetWhereSalesOrder”,“SalesPosition”,new{salesOrder=ViewBag.Item.SalesOrder1})) .ServerOperation(错误) ) .可滚动(a=>a.高度(“自动”)) .ClientDetailTemplateId(“templateArticle”) .可选() .Pageable(p=>p.Refresh(false).Numeric(true).Enabled(true)) .Events(Events=>Events.Change(“toggleRow”).DataBound(“setSalesPositionColor”)) ) //子网格 @(Html.Kendo().Grid()) .Name(“网格=Id”) .列(列=> { columns.Template(@

).HtmlAttributes(新的{style=“width:5px;text align:left;“}”).HeaderHtmlAttributes(新的{style=“width:5px;“}); columns.Bound(c=>c.itemsdescription); columns.Bound(c=>c.ItemCode); columns.Bound(c=>c.DrawingNumberIndex); columns.Bound(c=>c.Amount); columns.Bound(c=>c.Size); columns.Bound(c=>c.Id).ClientTemplate( “#如果(\\\\\:data.ItemState\\\\\\\==1){”+ "" + 宽度(80)。标题(“”); } }) .AutoBind(真) .DataSource(ds=> ds.Ajax() .Read(Read=>Read.Action(“GetWhere SalesPositionId”、“SalesPositionItem”).Data(“{id:':id#'”#如果(cbhShowOnlyInCrate.checked){#,onlyInCrate:true#}”) .ServerOperation(错误) ) .Events(Events=>Events.DataBound(“articleDataBound”)) .ToClient模板() )
经过更多的尝试和错误,我找到了一个有效的解决方案

columns.Bound(c => c.Id).ClientTemplate(
      "\\# if (ItemState != 1) { \\#" +
      "<button type='button' class='btn btn-delete' onclick=\"deleteChildBtn('\\#: Id \\#','#: Id #')\"><span class='fa fa-trash'></span></button>" +
      "\\# } \\#"
);
columns.Bound(c=>c.Id).ClientTemplate(
“\\\如果(ItemState!=1){\\\\”+
"" +
"\\# } \\#"
);

经过更多的尝试和错误,我找到了一个有效的解决方案

columns.Bound(c => c.Id).ClientTemplate(
      "\\# if (ItemState != 1) { \\#" +
      "<button type='button' class='btn btn-delete' onclick=\"deleteChildBtn('\\#: Id \\#','#: Id #')\"><span class='fa fa-trash'></span></button>" +
      "\\# } \\#"
);
columns.Bound(c=>c.Id).ClientTemplate(
“\\\如果(ItemState!=1){\\\\”+
"" +
"\\# } \\#"
);