Проверьте подробности строки в сетке кендо - PullRequest
0 голосов
/ 25 июня 2018

Я использую сетку кендо, у которой есть подсетка, которая свернута, пока пользователь не решит отменить ее выбор.Чтобы убедиться, что у пользователя нет возможности развернуть строку, в которой нет данных в подсетке, я хотел бы проверить каждую строку на наличие дочерних данных.Если данные есть, должна появиться стрелка, если нет, то нет.

Для объединения двух сеток я использую

.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.Особенно видно, что значение по умолчанию свернуто.

Чтобы было ясно, я хочу выяснить, есть ли у текущей строки дочерняя строка, и если да, изменить элемент HasSubGrid до выполнения оператора if.

Любая помощь по этому вопросу будет принята с благодарностью.Если вам нужна дополнительная информация, не стесняйтесь спрашивать.

1 Ответ

0 голосов
/ 25 июня 2018

Если я не ошибаюсь, если вы активируете шаблоны подробностей, все строки будут иметь стрелку expand, чтобы показать детали, независимо от того, есть ли у них детали или нет.По моему мнению, это старая проблема (отметьте здесь и здесь ), поскольку вы должны исправить ее самостоятельно в событии 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');

, чтобы получить детализациюстрока.

Одна важная деталь состоит в том, что содержимое детали отображается только после раскрытия основной строки.Таким образом, вы не сможете управлять каким-либо элементом в деталях до их рендеринга.

...