我使用的剑道网格具有折叠的子网格,直到用户决定取消选择它为止。为了确保用户不会选择展开子网格中没有数据的行,我想检查每一行是否有子数据。如果有数据,那么应该出现一个箭头,否则就不会出现。
为了将两个网格耦合在一起,我正在使用
.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元素。
在此问题上的任何帮助将不胜感激。如果需要更多信息,请随时询问。
答案 0 :(得分:1)
如果我没记错的话,如果您激活明细模板,则所有行都会有一个expand
箭头来显示明细,无论它是否有明细。我认为这是一个古老的 issue (请检查here和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');
具有详细信息行。
一个重要的细节是仅在扩展主行后才渲染细节内容。因此,您将无法在呈现细节之前管理细节中的任何元素。