代码之家  ›  专栏  ›  技术社区  ›  Muhammad Akhtar

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

  •  0
  • Muhammad Akhtar  · 技术社区  · 15 年前

    http://developer.yahoo.com/yui/examples/treeview/default_tree.html

    下面是在上面的URL中使用的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代码绑定,因为我需要从数据库获取数据,下面是我如何将数据绑定到asp.nettreeview控件

    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 回复  |  直到 15 年前
        1
  •  0
  •   Jim L    15 年前

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

    有几个选择,但有很多:

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

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