dhtmlxtree动态加载节点数据的小随笔
最近做了一个这个东西,颇有些感触,随笔记录一下自己的过程。
首先特别感谢:https://blog.csdn.net/cfl20121314/article/details/46852591,对我的帮助还是挺大的,虽然代码我运行不起来,但是报错信息让我少走了一些弯路。
需求:本地静态xml文件,一次性加载速度太慢,需要优化性能。(树结构数据都是本地静态文件,不涉及到数据库操作)
遇到这个问题首先先是百度,去研究一下dhtmlxtree 中文api文档,百度很久,基本结果都是很简单的说明文字,可以说基本都是一个方法名称,其余全靠猜,个人英文不好,难啊。
第一步就难住了,设置tree动态加载,这个该怎么设置?通过api得知,tree.setXMLAutoLoading(filepath),但是其中的路径难住了,这看到几种例子
1.直接是一个xml路径
2.是一个后台请求路径(java的,webapi的,mvc的等等语法写法)
对于我来说,我需要单击某一个父节点,加载所有子节点,所以这里肯定不能是一个静态xml文件路径,所以目光只能是第二种,所以很自然写了个后台方法(开始测试。后续再说。)
事情还是要继续进行下去,于是有了以下几种尝试:
1.将原本的一个xml文件,改为两个xml,其中一个只保留所有的一级父节点结构数据,另一个xml文件则保留所有数据,目的是想初始化加载父节点xml,其次通过单击父节点,去第二个xml文件查所有的子节点
这种想法很自然,但是操作过程颇为心酸。
1)加载父节点xml很顺利,那怎么加载子节点?通过后端读取完整xml文件再去查询某一个id的子节点数据。
2)直接将完整的xml文件进行拆分,拆分为一个个单独的子节点xml文件
图方便选择了第二种,因为都是纯静态xml操作。拆分完毕。
犹由于我的项目是wcf架构,所以mvc的写法是:return XmlResult无法使用,设置resopnse type无法使用,java的看不懂基本也是设置返回值的type
尝试:
1.直接返回stream,果然提示load xml error
2.将流序列化,也属于胡乱尝试,卒+1
3.无果开始研究wcf如何返回xml数据,找到一个xmldocument,无果
4.继续找,发现一个xmlelement 找到答案。http://www.it1352.com/449260.html,最终搞定问题。
写的比较乱,记录一下自己从发现问题,到开始解决问题,到一筹莫展,到最终解决的一个过程。
百度的东西有很多和自己的应用场景不一致,比如百度的基本要么都是从后端加载,要么就是全部一次性加载,有的虽然说是异步,但是实际却不是。总的来说鱼龙混杂的信息太多。
还是要学会分析,找出自己需要的。