Gridview 如何在剑道模板上获取剑道网格

Gridview 如何在剑道模板上获取剑道网格,gridview,kendo-ui,kendo-grid,kendo-window,kendo-template,Gridview,Kendo Ui,Kendo Grid,Kendo Window,Kendo Template,首先我做了一个剑道格网。网格的每一行上都有一个按钮,单击该按钮可打开剑道模板(弹出窗口)。还在这里,没事 是否可以在弹出窗口中添加另一个网格并向每个网格行添加可编辑的子项(如网格层次结构) 这是我的主网格: var grid=$(“#grid”).kendoGrid({ 栏目:[ {字段:“名称”,标题:“名称”}, {字段:“描述”,标题:“描述”}, {字段:“备注”,标题:“备注”}, {命令:{名称:“详细信息”,文本:“…”,单击:showDetails},标题:“按钮”,属性:{

首先我做了一个剑道格网。网格的每一行上都有一个按钮,单击该按钮可打开剑道模板(弹出窗口)。还在这里,没事

是否可以在弹出窗口中添加另一个网格并向每个网格行添加可编辑的子项(如网格层次结构)

这是我的主网格:

var grid=$(“#grid”).kendoGrid({
栏目:[
{字段:“名称”,标题:“名称”},
{字段:“描述”,标题:“描述”},
{字段:“备注”,标题:“备注”},
{命令:{名称:“详细信息”,文本:“…”,单击:showDetails},标题:“按钮”,属性:{
样式:“文本对齐:居中;”
}
},
{字段:“状态”,标题:“状态”},
],
{………数据源和无关代码}

});您试图在元素在
x-kendo-template
中呈现之前对其进行初始化,因此只需将网格实例化移动到
kendoWindow
打开后的

function showDetails(e) {
    e.preventDefault();

    var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
    wnd.content(detailsTemplate(dataItem));
    wnd.center().open();
    // grid definition here
    var grid = $("#windowgrid").kendoGrid({
        .....
    }).data("kendoGrid");
}
“为每个网格行获取子行的代码”

为了实现这一点,可以在网格上与
detailTemplate
一起使用。使用
detailInit
功能,您将能够使用
[e.data]
访问该特定行的数据

// gets elements on detailRow
var detailRow = e.detailRow;
// get the data at the expanded row
var dataList = [e.data];      
我已更新您的,以显示首先初始化网格所需的更改,并扩展代码以提供第一个网格的详细行

编辑 为了根据所选值将过滤后的数据源应用于弹出式网格,可以在应用于剑道数据源之前对数据使用函数:

var filteredDataArr = dataArr.filter(function(el) {
    return el.NId == e.NId      
});
el
是数据数组中的元素,
e.NId
是父网格中选定的
NId


更新以演示上述操作。

考虑添加一个网格以适应您的问题并演示您的问题。您能否浏览给定dojo链接中的代码,并解释为什么第二个网格没有显示在模板弹出窗口中?谢谢,现在一切正常。您展示的示例在子行中只有一列。但是我应该怎么做才能在子行中获得两列呢?如果您希望添加其他信息,那么只需扩展
x-kendo-template
,为您需要的内容添加更多的
元素。如果您想使用嵌套网格,这里有一个示例。在您的例子中,如果使用本地数据,您只需将该网格元素的
dataSource
绑定到为父行提取的
dataList
。您可以在这里看到,弹出窗口中的网格再次出现问题,这次是以不同的方式出现的。我已经在弹出的网格数据源中的注释中解释过了,请仔细查看。您错误地分配了剑道数据源,将
数据指定为
Cdata
;这将导致弹出式网格不被填充-请参见“谢谢”,我是否有可能单击“类”列下第1行上的按钮,得到只有这4行具有NId='1'的网格