Kendo ui 由于存在客户端模板,在网格中插入新项失败

Kendo ui 由于存在客户端模板,在网格中插入新项失败,kendo-ui,Kendo Ui,我有一个剑道UI网格,我需要编辑。我还需要一个列的客户端模板 剑道ui网格中让我烦恼的部分: .Columns(columns => { columns.Bound(p => p.Author).Filterable(false).Width(100); columns.Bound(p => p.Name).Filterable(false).Title("Idea Name"); columns.Bound(p =>

我有一个剑道UI网格,我需要编辑。我还需要一个列的客户端模板

剑道ui网格中让我烦恼的部分:

.Columns(columns =>
    {
        columns.Bound(p => p.Author).Filterable(false).Width(100);
        columns.Bound(p => p.Name).Filterable(false).Title("Idea Name");
        columns.Bound(p => p.Description).Filterable(false);
        columns.Bound(p => p.BeginDate).Format("{0:d}");
        columns.Bound(p => p.ReleaseDate).Format("{0:d}");
        columns.Bound(p => p.NextAvailableStates).ClientTemplate
                        (
                         "#for(var i = 0; i < NextAvailableStates.length; i++) {" +
                         "# <li>" +
                         "<a href=/Idea/NextState?state=#=NextAvailableStates[i].ID#" +                                                "> #=NextAvailableStates[i].StepName # </a>" +
                         "</li> #" +
                         "} #"
                         )
                 .Title("Actions").IncludeInMenu(false).Visible(true)
                 .Sortable(false).Filterable(false);

    })
.Columns(Columns=>
{
columns.Bound(p=>p.Author).Filterable(false).Width(100);
columns.Bound(p=>p.Name).Filterable(false).Title(“Idea Name”);
columns.Bound(p=>p.Description).Filterable(false);
columns.Bound(p=>p.BeginDate).Format(“{0:d}”);
columns.Bound(p=>p.ReleaseDate).Format(“{0:d}”);
columns.Bound(p=>p.nextAvailableState).ClientTemplate
(
“#for(var i=0;i”+
"" +
“#”+
"} #"
)
.Title(“操作”).IncludeInMenu(假)。可见(真)
.可排序(错误)。可筛选(错误);
})
我的控制器:

公共部分类IDEA控制器:控制器
{
private StateMachineHelper=new StateMachineHelper();
公共行动结果索引(int?state)
{//必须ad才能对下一个可用状态进行建模
var模型=新列表();
AddRange(helper.GetIdeasByState(helper.GetStateByID(state));
foreach(模型中的var项目)
{
item.NextAvailableStates=helper.GetNextStates(helper.GetStateMachineInstancesByOrderID(item.ID));
}
返回视图(模型);
}
公共行动结果NextState()
{
返回视图();
}
公共操作结果读取([DataSourceRequest]DataSourceRequest请求,日期时间开始,日期时间结束)
{
var ideas=helper.GetIdeasBetweenDates(开始、结束);
DataSourceResult=ideas.ToDataSourceResult(请求);
返回Json(结果);
}
[接受动词(HttpVerbs.Post)]
公共操作结果创建([DataSourceRequest]DataSourceRequest请求,Idea产品)
{
if(product!=null&&ModelState.IsValid)
{
var helper=new StateMachineHelper();
var machine=new StateMachineInstance(){
ParentID=0,
//1->machineID
CurrentStateID=helper.GetFirstStateOfMachine(1.ID),
MachineID=1,
ParentStateID=0,
//OrderType:idea/command
OrderType=“Idea”
};
helper.AddNewOrder(产品、机器);
product.NextAvailableStates=helper.GetNextStates(机器);
}
返回Json(new[]{product}.ToDataSourceResult(request,ModelState));
}
}
public Idea()
{
this.StateMachineInstances=new HashSet();
}
[脚手架立柱(假)]
[数据成员]
公共int ID{get;set;}
[必需]
[数据成员]
公共字符串名称{get;set;}
[数据成员]
公共字符串说明{get;set;}
[数据成员]
[必需]
公共字符串作者{get;set;}
[数据成员]
public System.DateTime BeginDate{get;set;}
[数据成员]
公共可为空的ReleaseDate{get;set;}
[数据成员]
下一个可用州的公共列表
{
得到
{
返回下一个可用状态;
}
设置
{
NextAvailableState=值;
}
}
私有列表nextAvailableState=新列表();
公共虚拟ICollection StateMachineInstances{get;set;}
}
网格渲染得很好,每一列都填充了正确的信息。当我需要向网格中添加新项时,问题就会出现。弹出窗口不显示,我得到
未捕获引用错误:未定义nextAvailableState
。这实际上是有意义的,因为网格试图在返回新项之前绘制


我的问题:有没有一种方法可以在使用自定义客户机模板时插入新项目

您可以尝试修改客户端模板,以检查是否存在
nextAvailableState
,然后再使用它们:

 "# if (NextAvailableStates) {" +
 " for(var i = 0; i < NextAvailableStates.length; i++) {" +
    "# <li>" +
     "<a href=/Idea/NextState?state=#=NextAvailableStates[i].ID#" +                                                 "> #=NextAvailableStates[i].StepName # </a>" +
    "</li> #" +
 " } " + 
 "} #"
“#如果(下一个可用状态){”+
“对于(var i=0;i”+
"" +
“#”+
" } " + 
"} #"