2010-10-02 7 views
0

Comment puis-je lier des données au contrôle YUI Treeview http://developer.yahoo.com/yui/examples/treeview/default_tree.htmlliaison de données pour le contrôle YUI Treeview en C#

est le code JavaScript exemple ici qui ont été utilisés dans l'URL ci-dessus

<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> 

Le problème est, YUI contrôle treeview est binded en javascript, mais je veux lier dans le code C#, parce que je dois obtenir des données de base de données, voici comment je suis liaison de données pour asp.net contrôle 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(); 
    } 

Répondre

0

Tous mes commentaires supposent que vous voulez dire WebForms et non MVC.

Le framework YUI est purement client. Il est destiné à être utilisé avec n'importe quel site Web indépendamment de la plate-forme du serveur. L'arborescence ASP.NET est utilisée uniquement avec ASP.Net et n'a donc pas cette limitation. C'est un contrôle de serveur et donc il émet tout ce dont le client a besoin même s'il semble que vous vous liez directement à lui.

deux options, mais il y a beaucoup:

  • Utilisez un AJAX/JSON pour appeler à votre site Web pour obtenir les données au format JSON que vous pouvez ensuite gérer côté client.

Juste la façon dont vous vous posez cette question me fait penser que vous n'êtes pas familier avec AJAX « réel », donc voilà pourquoi j'ai l'option suivante:

  • Emit le code Java YUI directement à partir de votre code derrière. Javascript est juste plus de texte que le serveur envoie au client et vous pouvez l'émettre dynamiquement comme toute autre partie de votre script client. ScriptManager peut vous aider à atteindre le bon endroit sur la page, mais vous pouvez le faire en utilisant simplement un espace réservé ou un contrôle littéral. Alternativement, vous pouvez mettre la plus grande partie du code dans le balisage et utiliser <%%> pour remplacer les parties qui doivent provenir du serveur. De toute façon, vous devez écrire tout le code pour rendre votre arbre, puis comprendre les bits "remplaçables" et les fournir à partir du code côté serveur. MAIS assurez-vous qu'aucune des informations qui reviennent n'est une donnée qui a été saisie par un utilisateur final, sinon vous pourriez vous retrouver avec une vulnérabilité de type Cross Site Scripting.
Questions connexes