好的,废话不说了。
这是Michael的教程,可以说是step by step的。如果还不会DNN module开发的朋友,请先看这篇文章,也是很初级的,同样step by step,相信自己是最棒的。
http://www.codeproject.com/KB/applications/LCTDNNModDev.aspx
http://www.adefwebserver.com/DotNetNukeHELP/DNNTree/
我照着作下来,有这几点需要注意的,我用的是C#。
遇到的问题是:objNode.ImageIndex = eImageType.Folder
vs2005对此没有提示,说明并没有在上下文定义,或者引用相关的类或者名称空间。首先,我是在vs2005里用calss view和object view查找,没有! 接着在DNN Q群里问高手,结果得到提示,在filemanager.ascx.vb中找到了enum的定义,不过,还是引用不了。再后来google一通,还是未果。于是,我还向Michael去了mail,并在论坛上发了贴。结果,他们都给了我认真的回复,而当我作完这个练习后,我发现,在这段代码最后,有对eImageType.Folder
的定义。
Public Enum eImageType
Folder
Page
End Enum
Folder
Page
End Enum
很是惭愧!
建议遇到问题,按上述流程未解决的,请在相关的专业论坛发贴,实在不行,再向作者去mail。因为就在昨晚我看Michael的其他教程时,看到醒目的提示,请勿来mail,有问题到论坛。的确理解,他的教程读者比牛毛还多,都去mail,还不累死,哪儿还有精力来写更多的教程呢。如果遇到我这样的问题,还不给郁闷死。
第2个问题,就是编译时,提示error,意料之中,从VB到C#,一般都有这样的问题。
在这儿推荐一个好站,http://labs.developerfusion.co.uk/convert/vb-to-csharp.aspx
它可以将vb c#互转代码。
当然,我是手工转的,因为代码量较少,没必要用工具,就当对自己的提高吧。
objTreeNode = objParent.TreeNodes(index)
这个index外面的圆括号,应该换成[],知道吧。不知道原因的,请在评论里回复。
另外,
Dim objTreeNode As TreeNode
转成C#
TreeNode objTreeNode;
后,可能会出错,如果你在using名称空间时,同时引用了using System.Web.UI.WebControls;
和using DotNetNuke.UI.WebControls;的话。
因为在这里,我们用的TreeNode是DotNetNuke.UI.WebControls;的,而非System.
所以,要么请您明确写明,写全,要么,将using System.Web.UI.WebControls;的WebControls去掉,因为这项目里正好用不着System的WebControls.今后如果遇到同一项目里需要用到这两个WebControls的话,请用前者,写全,写明。
第3个问题:
编译通过了,在IE里,除了图标显示为红叉外,其他都能正常使用,达到预期效果。
我看了图标的Property,显示的是http://localhost/images/folder.gif 而在我的系统里正确的应该在images前面加上dnn/
在vs2005中,查看DNNTree控件的属性,看到systemimagespath居然自作聪明的给我加上了images,请将其改为dnn(如果你也用的是DNN作为虚拟目录名)。
相应的
代码文件里也不需要像Michael那样加上"http://www.cnblogs.com/../"
而是
DNNTree1.ImageList.Add("images/folder.gif");
DNNTree1.ImageList.Add("images/file.gif");
一切OK,如果您还遇到什么新的问题,欢迎您在评论(http://blog.csdn.net/metababy)里,提出,这样,今后其他人搜到这文章,就不会出现同样的疑惑了。