Как сделать так, чтобы vss sdk treeview свернулся по умолчанию?

Как я могу получить комбинированный контроль типа TreeView.ComboTreeBehaviorName чтобы его узлы были свернуты по умолчанию?

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

Я также попытался проверить типы (в vss.d.ts), чтобы увидеть, есть ли свойство, которое я могу установить:

  • я нашел maxAutoExpandDropWidth который утверждает, что это Specifies the max size when auto-expand drop bigger than combo, но установка его в 0 или 1, похоже, не имеет никакого эффекта.
  • я нашел dropOptions?: IComboDropOptions; но, похоже, он не имеет никаких свойств для расширения / свертывания.
  • Я пытался добавить свойство collapsed: true к IComboOptions
  • Подпись Controls.Enhancement.enhance Кажется, метод предполагает, что я могу передать некоторые варианты как часть type собственность на IComboOptions, но я попробовал это и не мог сделать это, потому что type Свойство хочет строку, а не объект.
  • настройка node.expanded = false для всех узлов перед передачей дерева в source имущество

Вот некоторые соответствующие выдержки из кода:

import * as Controls_Combos from "VSS/Controls/Combos";
import * as Controls from "VSS/Controls";
import * as TreeView from "VSS/Controls/TreeView";



 this._$areaInput = $("<input type='text' id='inputAreaPicker' />")
                .val(someValueThatDoesnotMatter)
                .bind("blur", (e) => {
                    this._updateSomeOtherField();
                    this._validate();
                });
}

...

        <Controls_Combos.Combo>Controls.Enhancement.enhance(
            Controls_Combos.Combo,
            this._$areaInput,
            <Controls_Combos.IComboOptions> {
                type: TreeView.ComboTreeBehaviorName,
                source: ConvertToTreeNodes(someItems),  // loads multi-level tree successfully
                mode: 'drop',
                allowEdit: false,
                maxAutoExpandDropWidth: 1, // seems to have no effect
                collapsed: true  // no effect
            }
        );


export function ConvertToTreeNodes(items): TreeView.TreeNode[] {
    // let _this = this;
    return $.map(items, function (item) {
        let node = new TreeView.TreeNode(item.name);
        node.id = item.id;
        if (item.children && item.children.length > 0) {
            node.addRange(ConvertToTreeNodes(item.children));
        }
        node.expanded = false;
        return node;
    });
}

1 ответ

Решение

Ответом является недокументированное свойство с именем treeLevel:

<Controls_Combos.Combo>Controls.Enhancement.enhance(
            Controls_Combos.Combo,
            this._$areaInput,
            <Controls_Combos.IComboOptions> {
                type: TreeView.ComboTreeBehaviorName,
                source: ConvertToTreeNodes(someItems),
                mode: 'drop',
                allowEdit: false,
                treeLevel: 0 // collapse to first level by default

            }
        );

Я просил, чтобы это было задокументировано

Другие вопросы по тегам