Использование JQuery Dynatree с флажками в ASP.NET (не MVC) - PullRequest
1 голос
/ 11 марта 2011

Прямо сейчас я использую ASP.NET TreeView с включенными флажками на своей странице, и я динамически заполняю дерево в коде C #, используя значения узлов для хранения идентификаторов, полученных из БД.При обратной передаче я перебираю узлы и получаю проверенные и сохраняю их обратно в БД.

Чтобы получить флажки с тремя состояниями (это невозможно в ASP.NET TreeView), я хочу перейти к jQueryВ виде дерева.Наиболее многообещающим кажется Dynatree на http://wwwendt.de/tech/dynatree/doc/samples.html (постоянство щелчка слева.)

Есть ли еще какие-нибудь бесплатные ASP.NET Treeview с флажками, которые можно использовать?

Чтобы заполнить dynatree, я думаю о записи элементов UL и LI в ASP.NET LiteralControl, а затем о настройке Dynatree в html для заполнения дерева этим DIV.Это лучший способ?Нужно ли указывать идентификатор узла в li-идентификаторе, как это предлагается в документации, чтобы я мог прочитать его на сервере?

Однако я не могу найти простой способ прочитать значения обратно в коде для сохранения в БД .. т.е. как посмотреть, был ли проверен узел флажка в коде C #?Документы говорят это: // Получить копию объекта JavaScript дерева var dict = $ ("# tree"). Dynatree ("getTree"). ToDict ();// ... затем используем Ajax для отправки этого на ваш сервер ...

Можно ли это как-то увидеть в событии нажатия кнопки обратной передачи без использования ajax, использовать скрытые элементы управления asp.net и прочитать его в обратной передаче?

Документация здесь http://wwwendt.de/tech/dynatree/doc/dynatree-doc.html

Ответы [ 2 ]

2 голосов
/ 11 августа 2011

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

Инициализируйте дерево с разделом JavaScript, похожим на:

$("#tree").dynatree({
        title: "Title",
        checkbox: true,
        selectMode: 2,
        onSelect: function() {
            var tree = $("#tree").dynatree("getTree");
            var selKeys = $.map(tree.getSelectedNodes(), function(node){
                return node.data.key;
            });
            document.getElementById("<%= hiddenfieldname.ClientID %>").value = selKeys.join("|");
        }
    });

Тогда немного C # по строкам:

var objectIds = hiddenfieldname.Value.Split("|");
1 голос
/ 28 февраля 2012

Почему бы не создать строку Json и не поместить ее в скрытую переменную, передать все дерево обратно .net.В .net вы можете затем преобразовать это обратно в объект .net.

Конечно, это может привести к проблемам с производительностью больших деревьев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...