电脑中了比较深的毒,两天才搞定,今天继续~
看完Default.aspx,下面看看另外几个
前面说过,其实这个程序主要就是个相册功能,其他都没有实现,先把其他不麻烦的都扫一遍
简历(resume.aspx)和链接(Links.aspx)
都只是继承了masterpage下来的页面,没有什么动态内容
值得注意的一是他们的Div+css的布局写法和skin的运用
和default.aspx里面一样,文件中的"ImageButton"都是在skin中定义的,这样做skin的时候可以把图片url都改过来,这点要注意,用skin就一定得用到底~
register.aspx 注册页面,只使用了一个现成的CreateUserWizard控件,在开始研究成员服务之前先不谈这个
好,下面开始看相册
alumbs.aspx
photos.aspx
details.aspx
字面意思,分别是相册s,照片s(也就是浏览某一个相册),和具体的照片
先分析一下逻辑结构:
alumbs.aspx需要列出所有不同alumbid的相册,
photos.aspx列出具有同一个AlumbID的照片
details.aspx应该提供Photo的ID,然后显示单张Photo(其实不复杂)
看看代码,首先是alumbs.aspx
整个主体是一个DataList,DataList的好处是可以自动的按行列显示数据,这里用来显示alumbs正好(比repeater方便)
repeatColumns="2" repeatdirection="Horizontal"
按两列List数据,水平排列,一个“数据”实际上是个表格,里面显示每个相册的小图片
绑定也很简单,用一个ObjectSouce绑定在Select的GetAlumbs方法上,
根据现实要求很清楚,这需要返回Alumbs的数据集合,每个数据包括Alumb的ID 照片张数等等,下面先看看返回的数据类型
public int AlbumID { get { return _id; } }
public int Count { get { return _count; } }
public string Caption { get { return _caption; } }
public bool IsPublic { get { return _ispublic; } }
没错,就是这几个参数就对了,IsPublic用来判断是否要从数据库返回,判断方法前面说过
实际上有了上面数据绑定的经验,到这里GetAlumbs的函数大概已经能想象出样子了,用个存储过程返回需要的值就行了
photos.aspx
这个调用方法是用URL里的AlumbID=*传入alumbID,然后得到一个photo的集合
数据的绑定和Alumbs.aspx大同小异都用的DataList,ObjectDataSouce传入了一个AlumbID属性,通过GetPhotos(记得吗,default.aspx里面用过~)得到照片集合
Details.aspx
实际上,Details.aspx并非所谓的“单张照片显示”,如果通过PhotoID进行单张显示,那么处理同一相册的翻页会比较麻烦,于是这里用了一个比较好的方法,实质上所谓
Details.aspx就是一个只显示一张图片的Photo.aspx,因此只要让DataList只显示一条记录(这时候就应该改用FromView),然后用自动翻页功能就行了,所以在Photos.aspx调用
Details的时候传入的并非PhotoID,而是一个PageIndex,为了做到翻页,在!isPostback里面必须再更新当前页
有一个小技巧,在FromView模板里的Button只要指定一个相应的CommandName和CommandArgument,就可以实现各种页面功能,包括插入删除一类,具体的值书上和MSDN都有,这样
的好处是可以用自己的ImageButton而不必用原装的那个难看的Button
基于以上,他的数据源和Alumbs一模一样~~~
这一块儿就结束了,下面的任务是看Admin里面的东西,这里涉及到了插入删除图片,一些比较灵活的列表使用~这几天有些事情,可能得后天再看了,不算麻烦
admin之后,会继续研究这个程序使用的成员服务,都比较简单,成员服务之后,整个程序就差不多了,可以开始准备研究PetShop~