2004-7-19 6:15:00 作者:李飞 来源:未知 网友评论 0 条
论坛
第四章 留言本首页的制作 整个留言本由八个文件组成:
- index.aspx 留言本的首页
- post.aspx 发表新留言页
- face.aspx 选择头像页
- admin_loing.aspx 管理员登陆页
- admin_post.aspx 管理员回复页
- admin_update.aspx 管理员留言编辑
- admin_Cancellation.aspx 管理员注销页
- userweb.ascx 用户控件,用来显示版权信息
留言删除是在首页完成的,管理员登陆后,显示出删除留言内容的复选框和允许执行删除操作。
部署DreamweaverCtrls.dll控件 这个步骤十分重要,几乎90%的初学者没有留意到这点,导致用DW MX做的页面完全不能正常工作。如果没有部署DreamweaverCtrls.dll控件到站点根目录下的bim目录中,即使你在页面中插入数据集和数据网络,并且在数据集对话框中测试时能读出数据,但是页面始终报错,报错信息如下:
提示找不到
DreamweaverCtrls.dll程序集名称。好,现在,我们来动手部署这个文件。
新建index.aspx页,保存并打开文件,切换到“绑定面板”,如下图所示:

看见上图中的那个被蓝色线圈住的提示文字了吗?好,你终于看到了,点击“部署”二字,弹出下图对话框:

部署到AspNet\bin目录中。点击“部署”按扭,弹出以下对话框,按“确定”关闭它。

然后打开AspNet\bin目录,是否看到
DreamweaverCtrls.dll文件。有的话,恭喜你,成功了。
紧记:
DreamweaverCtrls.dll文件名称及其所在目录bin名称不能更改,并且bin文件夹必须保存在站点的根目录下,这是硬性要求,你就莫问为什么了。
index.aspx首页的制作 部署
DreamweaverCtrls.dll控件后,你就可以任意的使用DW MX的ASP.NET服务器行为了。下面就先做个留言本首页。
操作步骤:
1、打开index.aspx页,先在页面中插入一个表单,切换到代码视图,找到<form>标榜,添加runat="server"属性,如<form name="form1" id="form1" method="post" runat="server" >。
然后根据下面页面样式在表单内插入四个表格,当然你可以完全定制自己的样式。

2、插入数据集
打开“服务器行为”行为面板,选择“数据集”。如下图。

弹出“数据集”对话框,设置如下图:

排序按ID号从大到小排列,这样可以把最新的留言排在最前面。切换到“绑定”面板,展开数据集字段,如下图所示

把各个字段绑定到页面上。如下图所示:

图片代码如下:
发新留言:<img src="gif/FIL3319.GIF" border="0">
Qicq:<img src="gif/FIL3241.GIF" alt="<%# DataSet1.FieldValue("Qicq", Container) %>" >
邮 箱:<img src="gif/FIL24111.GIF" border="0">
主 页:<img src="gif/FIL24113.GIF" border="0">
编 辑:<img src="gif/FIL3242.GIF" border="0">
回 复:<img src="gif/FIL24003.GIF" border="0">
用户头像:<img src="<%# DataSet1.FieldValue("Face", Container) %>" >
表情图标:<img src="<%# DataSet1.FieldValue("Miange", Container) %>" >
复选框名称为“delete”,选定值为:<%# DataSet1.FieldValue("id", Container) %>
其中“编辑”和“回复”这两个图片链接,管理员登陆后才能链接到相关页,否则转到出错信息页。删除留言复选框只有在管理员登陆后才会显示出来,这里为编辑方便,所以让它显示出来。稍后还要编写一段函数代码,用来控制它的显示是否。还有的就是管理员回复内容,上面页面样式没有给出,是因为这段代码要根据该留言的回复状态决定是否显示,是动态的HTML,必须用一段函数判断实现。
打开MyMessage.mdb数据表,在MessageBook表中随便输入一些记录,除title(留言标题)、MessageBook(留言内容)、MessageName(留言人姓名)字段外,其它的都可以留空。按F12键预览,能显示记录了。如下图:

3、插入重复区域
上面显示的是一条留言,插入重复区域以显示更多的留言。选中下三个表格,第一个发新留言的那个表格就不用选中它了,如下图:

切换到“服务器行为”面板,点击加号弹出下拉菜单中选择“重复区域”, 如下图:

弹出重复区域对话框,设置每页显示10条记录。当然,你可以任意设数目,可不要太多了,否则会导致浏览速度变慢。

单击“确定”保存设置。DW MX就会自动在刚才选中的表格周围插入了Repeater控件。Repeater是三个数据显示控件中最为灵活的一个,可以任意定义自己的模板,使页面显得更美观。如果你看了源代码,会觉得Repeater控件好像和普通的ASP循环语句相似。其实Repeater控件不是普通的循环语句那么简单,它是由DataSet数据集读出数据库中的记录,并一次填充Repeater,不是由循环指令一行一行地读出数据。
好了,按F12键浏览页面,可以显示10条留言了。可是,当留言超过了10条怎么办?可以用分页功能。
4、添加分页功能
执行菜单“窗口——》插入”,如下图,打开“插入”面板。

切换到“应用程序”选项卡,如下图:

将光标定位在想要放置分页的地方,点击“

”弹出数据集导航条窗口,设置如下:

单击“确定”保存设置。在页面中插入分页导航链接:

打开数据库,添加多于10条的留言记录,预览页面,能正常分页。
把四个单元格合并,将光标在表格内定位,点击“插入”面板应用程序的“

”,弹出数据集导航状态窗口,如下图:

生成的导航状态,如下图:

上面分页有第一页、前一页、下一页和后一页功能,页数很多时,就有得你翻了。所以再添加一个页码功能,想看那一页,点击页码编号就能到达。另外,还应该有提示总页数、当前页功能。
在上图分页表格下再插入一个表格:

把光标在表格内定位,插入“显示当前页号”行为,如下图:

弹出“显示当前页号”,选择DataSet1数据集。

按“确定”保存设置。浏览页面,翻页时能显示当前是第几页。还有的就是如何显示总页数和页码了。这个须要手工添加些代码,但不是很多。
代码清单:
当前页:<%= DataSet1.CurrentPage + 1 %> 总页数:<%# DataSet1.LastPage+1 %> |
分页页码程序:
<%dim i as integer for i=1 to (DataSet1.LastPage+1) if (DataSet1.CurrentPage + 1)=i then response.Write("<font color=#FF0000><strong>" & i &"</strong> </font> ") else response.Write("<a href=''''index.aspx?DataSet1_currentPage="& (i-1) &"''''>" & i &"</a> ") end if next%> |
表现出来的效果如下:

表格做得不是很美观,你可以修饰它。
5.编写显示函数代码
对于访客而言,是没有删除留言的权限的,我们在留言本的首页添加了删除记录复选框,这个复选框必须是管理员登陆后才会显示出来。这里编写一段函数代码,判断Session会话是否有值,有的话则显示出来,并允许执行删除操作。
找到这段代码:
| <input name="delete" type="checkbox" id="delete" value="<%#DataSet1.FieldValue("id", Container)%>">删除 |
这个直接在设计视图下选中复选框和删除文字,然后切换到代码视图就能找到该行代码了。替换成:
<%# strdetlete(DataSet1.FieldValue("id", Container)) %>
下面定义一个strdetlete函数,
<script runat="server"> function strdetlete(strid as integer) as string''''定义一个strdetlete函数 if not session("MM_Username") is nothing then''''当session不为空时 strdetlete="<input name=delete type=checkbox id=delete value="& strid &" >删除" ''''输出复选框及它的值 end if end function </script> |
这段函数代码的作用是,判断session("MM_Username")是否有值,有的话则显示复选框和删除文字。这段函数仍然沿用了传统的ASP书写风格,可能是由于本人对ASP.NET了解得不够深入,没有使用先进的控件技术。这样作的目的为了实现批量删除,而DataGind控件虽然方便,但只能一次删除一条留言,所以本人没有作单独的删除记录页面。试把if not session("MM_Username") is nothing then改为if session("MM_Username") is nothing then,预览页面,复选框显示,查看页面源代码,复选框的值都能对应地等于留言的ID号。