上篇文章留下的问题还是很费了我一番劲的!不过搞定后有小小的快感!
老问题
上篇的问题是:如何在Treeview中加上编辑的小图表,而且这个层次数据对应的每个对象都不一样?
达到如下效果:
DNN开发中的一些细节(2)
新问题
由于TreeView的自动绑定,我是通过一个XML的查询得到数据源的,但是发现如果数据源不是所有分支都到根(比如有的分支只有一层)绑定将会因为找不到对应的字段而出错,并且他要求是一个标准的XML文档,就是只能有唯一的根元素。这些都是我不方便保证的。我只好手工遍历该数据来构造数。
考虑到这个树相对变化少,性能的问题不用太担心,再加上我们可以充分利用组件Cache的机制。
DNN开发中的一些细节(2)        private void CreateTree()
        }

原来很简单
在TreeView中能够方便加入CheckBox控件,但是一般控件的添加却没有相应的文档说明和实例。在HTML中run at server中也难找到控件插入的地方!
在浏览LoopThroughChild中发现可以动动Node.Text的脑筋了!一试果然很爽:
DNN开发中的一些细节(2)            if (IsEditable)
            }

熟悉DNN的朋友发现这个和在ASCX中的代码一样。
          
还需要改进的地方包括:img的src要改成“~/images/edit.gif”;还有这个写法好像会干扰TreeView的Select事件。这些好像都好解决!
至于树上不同层的节点(Node)对应的编辑模块不相同只用在上述代码中给sCtll赋予不同的关键字就可以了,然后在DNN的模块定义中将这些关键字指到不同的EditXXX.ascx就可以了。记得谁问过一View个模块可以对应多个Edit模块吗?答案是可以的。

几个开发中的备忘
(1)DNN中自带的controls/urlcontrol.ascx控件是我经常使用的,比如上传一些图片并指派给某个对象等等。这里头值得注意的是:FileFilter属性不是我们熟悉的*.jgp|*.gif,而是jpg,gif。
(2)图片要显示出来也费了周折。我通过urlControl上去的文件在对应的字段中被记录为“FILEID=22”这样子的。要是需要把它显示出来我的做法是:定义一个Image Web控件,代码部分就如下:
DNN开发中的一些细节(2){
DNN开发中的一些细节(2)string picUrl = objMyDBData.PicURL;
DNN开发中的一些细节(2)                    picUrl = GetActualFile(picUrl);
DNN开发中的一些细节(2)                    img.ImageUrl = picUrl;
DNN开发中的一些细节(2)}
DNN开发中的一些细节(2)
DNN开发中的一些细节(2)private string GetActualFile(string picUrl)
DNN开发中的一些细节(2)        {
DNN开发中的一些细节(2)            if ((picUrl != null) && (picUrl != ""))
DNN开发中的一些细节(2)            {
DNN开发中的一些细节(2)                if (picUrl.IndexOf("://") 
<= 0)
DNN开发中的一些细节(2)                {
DNN开发中的一些细节(2)                    FileController ctlFile 
= new FileController();
DNN开发中的一些细节(2)                    int fileID 
= Int32.Parse(picUrl.Substring(7, picUrl.Length - 7));
DNN开发中的一些细节(2)                    FileInfo fileInfo 
= ctlFile.GetFileById(fileID, this.PortalId);
DNN开发中的一些细节(2)                    picUrl 
= PortalSettings.HomeDirectory + fileInfo.Folder + fileInfo.FileName;
DNN开发中的一些细节(2)                }
DNN开发中的一些细节(2)            }
DNN开发中的一些细节(2)            return picUrl;
DNN开发中的一些细节(2)        }




相关文章:

  • 2021-12-22
  • 2021-12-25
  • 2022-12-23
  • 2021-11-28
  • 2021-09-27
  • 2021-09-06
  • 2021-12-30
猜你喜欢
  • 2021-12-14
  • 2021-10-29
  • 2021-09-08
  • 2021-05-13
  • 2022-12-23
  • 2022-02-27
  • 2021-06-09
相关资源
相似解决方案