Как получить массив свойств документа из TreeNode?

Можно ли получить массив/список свойств документа из объекта Kentico TreeNode?

Мой вариант использования: я хотел бы написать класс, который обертывает пользовательский тип документа. Этот класс будет иметь метод, который выводит форматированную строку, содержащую значения, введенные пользователем в CMSDesk.

Если я заранее знаю имя свойства, я могу сделать следующее:

(TreeNode)node.GetValue("Key");

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

Вместо этого я хотел бы получить к ним доступ примерно так:

string[] keys = (TreeNode)node.GetKeys();
Dictionary<string, string> dictionary = new Dictionary<string, string>();

foreach(string key in keys)
{
  dictionary.Add(key, node.GetValue(key));
}

Я не вижу метода для объекта TreeNode, который дал бы мне данные, которые я ищу - есть ли способ сделать это?


person Charles Wesley    schedule 19.03.2014    source источник


Ответы (1)


Это может зависеть от того, создаете ли вы новый TreeNode или извлекаете его из дерева содержимого.

Если вы используете SelectSingleNode или SelectNodes для заполнения вашего объекта node, то node.ColumnNames предоставит вам список всех столбцов/полей, которые возвращаются с классом этого узла.

foreach (string column in node.ColumnNames)
{
     //do something helpful with each one
     string value = ValidationHelper.GetString(node.GetValue(column), string.Empty);
}
person Mcbeev    schedule 20.03.2014
comment
Так просто, и все же я не видел этого в своем интеллекте. Это именно то, что мне было нужно, спасибо друг! - person Charles Wesley; 21.03.2014