将数据绑定到c#中的YUI Treeview控件

时间:2010-10-02 20:11:47

标签: c# asp.net treeview

如何将数据绑定到YUI Treeview控件http://developer.yahoo.com/yui/examples/treeview/default_tree.html

以下是上述网址中使用的示例JavaScript代码

<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#代码绑定,因为我需要从Database获取数据,这里是我如何将数据绑定到asp.net treeview控件

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 :(得分:0)

我的所有评论都假设你的意思是WebForms而不是MVC。

YUI框架纯粹是客户端。无论服务器平台如何,它都可以与任何网站一起使用。 ASP.NET树视图仅用于ASP.Net,因此没有该限制。它是一个服务器控件,因此它实际上会发出客户端需要的所有内容,即使它看起来像是直接绑定到它。

有两种选择,但有很多选择:

  • 使用AJAX / JSON回调您的网站以获取JSON格式的数据,然后您可以处理客户端。

就像你问这个问题的方式让我觉得你不熟悉“真正的”AJAX,所以这就是为什么我有下一个选择:

  • 直接从您的代码中发出Java YUI代码。 Javascript只是服务器发送给客户端的更多文本,您可以像客户端脚本的任何其他部分一样动态地发出它。 ScriptManager可以在这里帮助它到达页面上的正确位置,但理论上你可以只使用占位符或文字控件。或者,您可以将大部分代码放在标记中并使用&lt; %%&gt;替换需要来自服务器端的部件。无论哪种方式,您需要编写所有代码来渲染您的树,然后找出“可替换”位并从服务器端代码提供它们。但请确保返回的信息都不是最终用户输入的数据,否则您最终可能会遇到跨站点脚本漏洞。