Привязка данных к элементу управления TreeView YUI в c # - PullRequest
0 голосов
/ 03 октября 2010

Как я могу привязать данные к элементу управления YUI Treeview http://developer.yahoo.com/yui/examples/treeview/default_tree.html

Вот пример кода JavaScript, который использовался в приведенном выше URL

<div id="treeDiv1">
</div>

<script type="text/javascript">
    var tree;
    (function() {
        function treeInit() {
            buildRandomTextNodeTree();
        }
        function buildRandomTextNodeTree() {
            tree = new YAHOO.widget.TreeView("treeDiv1");
            for (var i = 0; i < 5; i++) {
                var tmpNode = new YAHOO.widget.TextNode("label-" + i, tree.getRoot(), false);
                buildLargeBranch(tmpNode);
            }
            tree.draw();
        }
        function buildLargeBranch(node) {
            if (node.depth < 8) {
                YAHOO.log("buildRandomTextBranch: " + node.index, "info", "example");
                for (var i = 0; i < 8; i++) {
                    new YAHOO.widget.TextNode(node.label + "-" + i, node, false);
                }
            }
        }

        YAHOO.util.Event.onDOMReady(treeInit);
    })();

</script>

Проблема в том, что элемент управления YUI TreeViewпривязан в javascript, но я хочу связать в коде C #, потому что мне нужно получить данные из базы данных, вот как я привязываю данные к элементу управления дерева просмотра asp.net

if (dsSalesRepresent.Tables[0].Rows.Count > 0)
    {
        dsSalesRepresent.Relations.Add("Children", dsSalesRepresent.Tables[0].Columns["NodeId"], dsSalesRepresent.Tables[0].Columns["ParentId"]);

        trvSalesRepresent.Nodes.Clear();

        foreach (DataRow masterRow in dsSalesRepresent.Tables[0].Rows)
        {
            if (masterRow["ParentId"].ToString() == "")
            {
                TreeNode masterNode = new TreeNode((String)masterRow["JobTitle"], Convert.ToString(masterRow["NodeId"]));
                trvSalesRepresent.Nodes.Add(masterNode);

                TreeNode FirstchildNode = new TreeNode((String)masterRow["UserName"], Convert.ToString(masterRow["ParentId"]));
                masterNode.ChildNodes.Add(FirstchildNode);

                foreach (DataRow childRow in masterRow.GetChildRows("Children"))
                {
                    TreeNode childNode = new TreeNode((String)childRow["UserName"], Convert.ToString(childRow["ParentId"]));
                    masterNode.ChildNodes.Add(childNode);
                }
            }
        }
        trvSalesRepresent.ExpandAll();
    }

1 Ответ

0 голосов
/ 03 октября 2010

Все мои комментарии предполагают, что вы имеете в виду WebForms, а не MVC.

Инфраструктура YUI является чисто клиентской стороной.Он предназначен для использования с любым веб-сайтом независимо от серверной платформы.Древовидное представление ASP.NET используется только с ASP.Net и поэтому не имеет этого ограничения.Это серверный элемент управления, поэтому он фактически испускает все, что нужно клиенту, даже если кажется, что вы привязаны непосредственно к нему.

Несколько вариантов, но есть много:

  • Используйте AJAX / JSON, чтобы перезвонить на ваш сайт, чтобы получить данные в формате JSON, которые затем вы сможете обрабатывать на стороне клиента.

То, как вы задаете этот вопрос, заставляет меня думать, что вы не очень знакомы с "настоящим" AJAX, поэтому у меня есть следующий вариант:

  • Извлекайте код Java YUI прямо из вашего кода.Javascript - это просто больше текста, который сервер отправляет клиенту, и вы можете динамически выдавать его, как и любую другую часть вашего клиентского скрипта.ScriptManager может помочь в этом, если доставить его в нужное место на странице, но теоретически вы можете сделать это просто с помощью заполнителя или буквального элемента управления.Кроме того, вы можете поместить большую часть кода в разметку и использовать <%%> для замены частей, которые должны поступать со стороны сервера.В любом случае вам нужно написать весь код для отображения вашего дерева, затем выяснить «заменяемые» биты и предоставить их из кода на стороне сервера.НО убедитесь, что никакая возвращаемая информация не является данными, введенными конечным пользователем, в противном случае вы можете столкнуться с уязвимостью межсайтового скриптинга.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...