Datalist内嵌与递归的用法分析

来源:互联网 发布:2016淘宝联盟导购推广 编辑:程序博客网 时间:2024/06/09 23:32

 

正在做一个网站遇到了一点问题,关于留言的问题。

我的数据库采用递归思想建立的,主要有URID(留言编号)URContent(留言内容)UID(所属店铺)USID(店铺编号)URFID(留言父级编号)。留言显示的方式类似QQ空间的留言板。

默认的第一次留言URFID0,以后有回复的留言URFID就为对应留言的URID

说了这么大会大家都急了吧,现在马上进入正题,呵呵。

首先,我想既然数据库中有很多数据,我就用datalist先把URFID0的所有留言找到。

其次,用递归的方法将里面的内容全部读取出来。

这时问题就来了,每个留言的回复都不一定,总不能一直用datalist,再里面一直嵌套吧,这个弯迷糊了一节多课,后来经过天涯浪子老师的提醒。他说你为什么一定要想将控件拖上去呢?为什么不用代码将控件自动生成上去呢?

我恍然大悟,首先我先在datalistItemTemplate里放一个panel控件,然后将datalist控件放到panel控件上,将URFID0的数据都绑定上去。

在递归方法里我开始尝试着用用代码添加控件,我又进入一个误区那就是:用代码创建datalist控件然后将lable控件和image控件添加上去,又浪费了好长时间。这样做的错误在于datalist里面有很多的项,你得指定你要添加到哪一项,而且样式你也不好加上去。

我开始尝试装换思路,为什么一定要添加datalist控件呢?为什么我不能直接添加html控件呢?我开始将样式和需要显示的数据用拼接字符串的形式去添加到panel空间里,每递归一次我就判断是否下面还有值。

这样是将数据库中的数据显示出来了,但是又有一个问题来了,回复时不能指定你需要回复的URID,开始想,如果datakeys[e.item.itemindex]能改变就好了,由于它是个只读属性,我是改变不了,想了一会还是算了,换个方法吧,用session吧,可是每次读取的数据很多,麻烦,中午吃饭的时候又想了会,想起来我以前用的隐藏控件HiddenField,终于恍然大悟,

最终达到了我想要的效果了,好高兴,呵呵

下面我就和大家分享一下我这一天多的成果吧,呵呵