zoukankan      html  css  js  c++  java
  • 利用TreeView控件动态生成无限级树(续:通过绑定动态xml文件)

    在上一篇
    利用TreeView控件动态生成无限级树
    中提到的那个动态生成XML文件进行绑定的办法
    今天也被我实现了

    把生成XML文件的代码单独放到一个页面中,比如说叫GetXml.aspx页中去
    然后指定
    TreeView2.TreeNodeSrc = "GetXml.aspx";

    而这个GetXml.aspx.cs中的代码如下
    private void SendXml()
            
    {
                
    //Create Xml File
                XmlDocument objXmlDoc = new XmlDocument();

                
    //Insert Xml Declaration
                XmlDeclaration objXmlDeclare = objXmlDoc.CreateXmlDeclaration("1.0""UTF-8""yes");
                objXmlDoc.InsertBefore(objXmlDeclare, objXmlDoc.DocumentElement);

                XmlElement objRootElem 
    = objXmlDoc.CreateElement("TREENODES");
                objXmlDoc.AppendChild(objRootElem);

                CreateXml(objXmlDoc, objRootElem, 
    0);

                System.Xml.XmlTextWriter xmlwriter 
    = new System.Xml.XmlTextWriter(Response.OutputStream,Response.ContentEncoding);
                xmlwriter.Formatting 
    = Formatting.Indented;
                xmlwriter.Indentation 
    = 4;
                xmlwriter.IndentChar 
    = ' ';
                objXmlDoc.WriteTo(xmlwriter);
                xmlwriter.Flush();
                Response.End();
                xmlwriter.Close();
            }


            
    private void CreateXml(XmlDocument objXMLDoc, XmlElement objRootElem, int belong)
            
    {
                
    //Get DataSet
                DataSet ds = new DataSet();
                
    foreach(DataRow dr in ds.Tables[0].Rows)
                
    {
                    
    //Create ChildNode TreeNode
                    XmlElement objXmlElem = objXMLDoc.CreateElement("TREENODE");
                    objRootElem.AppendChild(objXmlElem);

                    
    //Create Attributes Text
                    XmlAttribute objXmlAttText = objXMLDoc.CreateAttribute("Text");
                    objXmlAttText.Value 
    = dr["text"].ToString().Trim();
                    objXmlElem.SetAttributeNode(objXmlAttText);

                    
    //Create Attributes CheckBox
                    XmlAttribute objXmlAttCB = objXMLDoc.CreateAttribute("CheckBox");
                    objXmlAttCB.Value 
    = "True";
                    objXmlElem.SetAttributeNode(objXmlAttCB);

                    
    //Create Attributes Expanded
                    XmlAttribute objXmlAttExp = objXMLDoc.CreateAttribute("Expanded");
                    objXmlAttExp.Value 
    = "True";
                    objXmlElem.SetAttributeNode(objXmlAttExp);

                    
    int id = int.Parse(dr["id"].ToString().Trim());
                    CreateXml(objXMLDoc, objXmlElem, id);
                }

            }

    函数的递归思想用的仍然是上一篇中的同样的思想
    这里把生成的objXMLdoc文件用XmlTextWriter写入到一个Xml流中
    然后利用xmlwriter.Flush()的方式进行输出
    这样就可以得到这个Xml文件了
    在PageLoad函数里调用这个SendXml()方法即可
    private void Page_Load(object sender, System.EventArgs e)
            
    {
                BindXmlTree();
            }
  • 相关阅读:
    鸡兔同笼问题多解
    JavaSE复习日记 : 循环语句(for/while/do while)
    JavaSE复习日记 : 八种基本数据类型
    递归函数
    JavaSE复习日记 : 条件判断语句
    访问权限系列一(public/private/protected/default):成员变量
    JavaSE复习日记 : 算是个小前言吧
    转:SQL Server 索引和视图
    转:SQL Server 数据库基础编程
    转:在网页html/aspx中增加一段播放器代码
  • 原文地址:https://www.cnblogs.com/index/p/58223.html
Copyright © 2011-2022 走看看