Пользовательские значки JsTree с плагином Json_data

Я использую JsTree на веб-сайте MVC. Я использую плагин json_data для заполнения дерева. Действие My Controller возвращает JsonResult, используя класс, который я создал для представления узлов. Я читал документацию о том, как указать собственный значок для определенного узла, но я могу кажется, я не понимаю. Кажется, предполагается, что данные должны быть объектом, содержащим строки заголовка и значка, но это остановило загрузку дерева, когда я попробовал. Структура класса, которую я использую на данный момент, выглядит следующим образом.

public class NodeModel
{
    public string data;
    public NodeAttribute attr;
    public string state = "closed";
    public string icon = "default/file.png";
}

public class ParentNodeModel : NodeModel
{
    public List<NodeModel> children;
}

public class NodeAttribute
{
    public string id;
    public string type;
}

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

Решено

Изменение структуры моего класса, чтобы превратить строку данных в новый объект, было на самом деле правильным форматом. Но с новой структурой другая часть моего кода давала сбой (сейчас исправлено). Таким образом, классы теперь будут выглядеть так

public class NodeModel
{
    public NodeData data;
    public NodeAttribute attr;
    public string state = "closed";
}

public class NodeData
{
    public string title;
    public string icon = "path/file.png";
}

person Joe    schedule 17.08.2011    source источник


Ответы (1)


Кажется, что ваши объекты определены правильно. Из документации jsTree:

если icon содержит косую черту /, он рассматривается как файл, используемый для фона. иначе - добавляется как класс в узел "ins"

Я предполагаю, что «default/file.png» был добавлен как класс CSS к узлу «ins», поэтому, возможно, косая черта «/» должна быть первым символом, попробуйте установить значение значка как «/default/file.png». ".

Также вы можете проверить, как мы используем jsTree в нашем проекте:

person Daniil Novikov    schedule 17.08.2011
comment
Спасибо за предложения. Я проверил html с помощью firebug, и класс css, похоже, не изменился (я все еще получаю ‹ins class=jstree-icon›‹/ins›). Я играл с URL-адресом и пытался добавить «/» в начало. В документации сказано, что он должен содержать «/», и он будет использоваться в качестве URL-адреса. У меня такое ощущение, что иконка строка не должна быть там у меня она есть. Я нашел этот пример, который снова предполагает, что значок должно быть в объекте данных, но когда я пытаюсь это сделать, дерево загружается навсегда. - person Joe; 17.08.2011
comment
Вы видели эту тему: groups.google.com/group/ jstree/browse_thread/thread/. Кажется, та же проблема. - person Daniil Novikov; 17.08.2011
comment
Я прочитал ветку и начал играть с демо-страницей. Я добавил некоторые необработанные данные json в демонстрационное дерево и сумел получить собственный значок. Правильный формат — преобразовать данные в объект, содержащий заголовок и значок. Так что что-то смешное должно происходить в моем собственном проекте, но это отличное начало, я думаю, теперь мне есть над чем работать :) - person Joe; 17.08.2011