检查 kendo 网格中的详细信息行
Check for detail row in kendo grid
我使用 kendo 网格,它有一个子网格,该子网格在用户决定取消选择之前一直处于折叠状态。为了确保用户无法选择展开子网格中没有数据的行,我想检查每一行的子数据。如果有数据,应该出现一个箭头,如果没有则没有。
为了将两个网格耦合在一起,我正在使用
.ClientDetailTemplateId("MyTemplate")
我想要的代码 运行 看起来像这样
function dataBound(e) {
var grid = e.sender;
var gridData = grid.dataSource.view();
expandGridDetailsSystem(e);
for (var i = 0; i < gridData.length; i++) {
//get the item uid
var currentUid = gridData[i].uid;
var currentRow = grid.table.find("tr[data-uid='" + currentUid + "']");
var detailRow = currentRow.next(".k-detail-row");
if (!detailRow) {
//remove the expand button
$(currentRow).find(".k-hierarchy-cell a").removeClass("k-icon k-i-expand");
}
}
collapseGridDetailsSystem(e);
}
if (!gridData[i].HasSubGrid)
是我想将布尔值保存到的内容。问题是我不知道如何检查 k-detail-cell。特别是看到默认是折叠的。
明确地说,我想查找当前行是否有子行,如果有,则在执行 if 语句之前更改 HasSubGrid 元素。
如有任何帮助,我们将不胜感激。如果需要更多信息,请随时询问。
如果我没记错的话,如果您激活详细信息模板,所有行都会有一个 expand
箭头来显示详细信息,无论是否有详细信息。在我看来这是一个老问题(检查here and here)因为你必须在dataBound
事件中自己修复它,这有点难看。鉴于此,您的所有行都将保证有一个同级详细信息行,该行在 master 行展开之前一直处于隐藏状态。
换句话说,对于网格中的每个 tr.k-master-row
(实际上是显示的数据行),它旁边都会有一个 tr.k-detail-row
,例如:
<tr class='k-master-row'></tr>
<tr class='k-detail-row'></tr>
<tr class='k-master-row'></tr>
<tr class='k-detail-row'></tr>
所以你可以做...
var currentRow = grid.table.find("tr[data-uid='" + currentUid + "']"),
detailRow = currentRow.next('.k-detail-row');
有明细行。
一个重要的细节是细节内容只有在主行展开后才会呈现。因此,您将无法在渲染之前详细管理任何元素。
我使用 kendo 网格,它有一个子网格,该子网格在用户决定取消选择之前一直处于折叠状态。为了确保用户无法选择展开子网格中没有数据的行,我想检查每一行的子数据。如果有数据,应该出现一个箭头,如果没有则没有。
为了将两个网格耦合在一起,我正在使用
.ClientDetailTemplateId("MyTemplate")
我想要的代码 运行 看起来像这样
function dataBound(e) {
var grid = e.sender;
var gridData = grid.dataSource.view();
expandGridDetailsSystem(e);
for (var i = 0; i < gridData.length; i++) {
//get the item uid
var currentUid = gridData[i].uid;
var currentRow = grid.table.find("tr[data-uid='" + currentUid + "']");
var detailRow = currentRow.next(".k-detail-row");
if (!detailRow) {
//remove the expand button
$(currentRow).find(".k-hierarchy-cell a").removeClass("k-icon k-i-expand");
}
}
collapseGridDetailsSystem(e);
}
if (!gridData[i].HasSubGrid)
是我想将布尔值保存到的内容。问题是我不知道如何检查 k-detail-cell。特别是看到默认是折叠的。
明确地说,我想查找当前行是否有子行,如果有,则在执行 if 语句之前更改 HasSubGrid 元素。
如有任何帮助,我们将不胜感激。如果需要更多信息,请随时询问。
如果我没记错的话,如果您激活详细信息模板,所有行都会有一个 expand
箭头来显示详细信息,无论是否有详细信息。在我看来这是一个老问题(检查here and here)因为你必须在dataBound
事件中自己修复它,这有点难看。鉴于此,您的所有行都将保证有一个同级详细信息行,该行在 master 行展开之前一直处于隐藏状态。
换句话说,对于网格中的每个 tr.k-master-row
(实际上是显示的数据行),它旁边都会有一个 tr.k-detail-row
,例如:
<tr class='k-master-row'></tr>
<tr class='k-detail-row'></tr>
<tr class='k-master-row'></tr>
<tr class='k-detail-row'></tr>
所以你可以做...
var currentRow = grid.table.find("tr[data-uid='" + currentUid + "']"),
detailRow = currentRow.next('.k-detail-row');
有明细行。
一个重要的细节是细节内容只有在主行展开后才会呈现。因此,您将无法在渲染之前详细管理任何元素。