fandm
Новичок
Пока раскопки остановились на том, что в исходниках jqGrid collapseRow и collapseNode выполняются при сворачивании узла для всех Rows, которые возвращаются функцией getNodeChildren (в итоге таким Rows прописывается display:none; и это воспроизводит эффект сворачивания). Так вот, эта функция ничего не возвращает, т.е. тупо пустая строка. В итоге получается, что как бы нет дочерних Rows и потому некому делать collapse - вот и получается, что иконка меняется, а сворачивание не происходит. Теперь пытаюсь понять почему getNodeChildren может ничего не возвращать...Там внутри считывается $t.p.treeReader.parent_id_field, он равен "parent" и мы такое поле заполняем как раз в parseRow, верно? В getNodeChildren для каждого Row опрашивается его parent_id и, если он равен тому узлу, который мы сейчас хотим свернуть, то такой Row добавляется в массив дочерних Rows. Так вот, в моём случае для всех Row, почему-то, parent = null...
Всё, разобрался. Оказывается полем, которое выполняет роль parent, используется в query, но я для него забыл прописать столбец в colModel, поэтому оно не попало в select-часть и поэтому оно не было доступно в parseRow, т.е. для всех Rows parent в итоге был равен null. Всё просто.
Так что не забывайте прописывать в colModel столбец для поля parent!
Всё, разобрался. Оказывается полем, которое выполняет роль parent, используется в query, но я для него забыл прописать столбец в colModel, поэтому оно не попало в select-часть и поэтому оно не было доступно в parseRow, т.е. для всех Rows parent в итоге был равен null. Всё просто.
Так что не забывайте прописывать в colModel столбец для поля parent!