当前位置:编程学习 > asp >>

asp+版本简单的留言板的制作(一)(二)(三)

答案:

asp+版本简单的留言板的制作(一)
/*
豆腐制作,都是精品
http://www.asp888.net 豆腐技术站
如转载,请保留版权信息
*/
前言:
俗话说,眼看千遍,不如手写一遍,的确,很多纯粹理论性的东西,看多了,只是有了个简单的认识,其实在具体的程序调试过程中,肯定会遇到很多很多的问题一直想给大家写个什么程序的,但是 豆腐最近特别忙,年底了,什么事情都要结算,再加上我一直要想办法写一些文章来奉献给大家,终于抽出来一个下午,来做了一个这样的程序,结果忘记关OICQ了,很多的网友的信息 都没有时间回复,在这里向 jspfuns 和 蓝 表示道歉。

程序开始前的准备工作:
首先要考虑的就是 如何在一个 所有的程序都可以访问到的地方设置sql server 的连接串,因为我正在全力以赴的准备做一个现在的http://www.asp888.net 的aspx版本的站点,如果只是为这个留言版单独
做一个conn连接串,未免太。。。,在asp+中MS 抄袭了 jsp 的一些概念和做法,在jsp中有config.xml文件asp+中有config.web 把这个文件放到留言版所在的虚拟目录下,将连接串放在这里,大家请看我的连接串
<configuration>
<appsettings>
<add key="Conn" value="server=localhost;uid=sa;pwd=;Database=doufu"/>
</appsettings>
</configuration>

好了,准备工作都做好以后,准备开始做留言版的录入部分,开始想纯粹使用vs7自代的web forms 功能,后来发现有一些实际使用的不方便,所以还是用了一些传统的方法和web forms 结合使用,但是这样 vs7的智能感知 功能就不能用了,好可惜。default.aspx 的内容如下
<%@ Page language="c#"%>
<HTML><HEAD>
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#"></HEAD>
<body>
<a href=><form method="post" action="doLiuyan.aspx" runat="server">

<Table border=1>
<tr>
<td width="20%">您的呢称:</td>
<td><asp:TextBox BackColor="#ccffff" id=txtName Runat=server ></asp:TextBox></td>
</tr>
<tr>
<td width="20%">您的联系Email:</td>
<td width="80%"><asp:TextBox id=txtMail runat="SERVER" BackColor="PowderBlue" Width="154" Height="26" MaxLength="40"></asp:TextBox></td>
</tr>
<tr>
<td width="20%">您的发言主题:</td>
<td width="80%"><asp:TextBox id=txtTitle runat="SERVER" BackColor="PowderBlue"></asp:TextBox></td>
</tr>
<tr>
<td width="20%">您的留言内容</td>
<td width="80%"><asp:TextBox id=txtContent runat="SERVER" BackColor="PowderBlue" Width="244" Height="129" TextMode="MultiLine"></asp:TextBox></td>
</tr>
</Table>
<input type="submit" name="Button1" value="提交留言" id="Button1" style="background-color:Wheat;border-style:Dotted;">

<input type="reset" name="Button2" value="取消留言" id="Button2" style="background-color:Wheat;border-style:Dotted;">

<a id="HyperLink1" title="点击这里察看所有留言" href=></form>
</body></HTML>
呵呵,这个页面我用来测试web form 所以搞了一些 没名堂的 东西,呵呵:)

[page_break]

asp+版本简单的留言板的制作(二)
/*
豆腐制作,都是精品
http://www.asp888.net 豆腐技术站
如转载,请保留版权信息
*/

在留言的录入界面完成后,自然要准备做留言内容的录入了。这个其中一个很关键的地方就是如何将我们在config.web 的内容读取出来,我用了下面的几条语句
Dim Cfg as HashTable
Cfg = Context.GetConfig("appsettings")
Conn = New SQLConnection(cfg("Conn"))
这样就得到了我们在config.web 中设定的 连接串,程序如下
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SQL" %>
<script runat="server" language="VB">
Sub Page_Load(Src As Object, E As EventArgs)

Dim conn As SQLConnection
Dim Cfg as HashTable
Cfg = Context.GetConfig("appsettings")
Conn = New SQLConnection(cfg("Conn"))
dim strSQL as string
dim strNickName as string
dim strMail as string
dim strTitle as string
dim strContent as string
dim strIPAddr as string
strNickName=replace(request.form("txtName"),"'","''")
strEmail=replace(request.form("txtMail"),"'","''")
strTitle=replace(request.form("txtTitle"),"'","''")
strContent=replace(request.form("txtContent"),"'","''")
strIPAddr=Request.ServerVariables ("REMOTE_ADDR") '用户IP地址
strSQL="insert into msgBoard(nickname,email,ipAddr,msgTime,msgTitle,msgContent)values("
strSQL=strSQL & "'" & strNickName & "','" & strEMail & "','" & strIPAddr & "',getdate(),'" & strTitle & "','" & strContent & "')"
response.write(strSQL)
Dim Cmd As SQLCommand
Cmd = New SQLCommand(strSQL,conn)
Cmd.ActiveConnection.Open()
Cmd.Execute()
Cmd.ActiveConnection.Close()
Response.Redirect("showmsg.aspx")
end sub
</script>
大家其实一看,就知道这段程序其实和asp的程序没有什么区别嘛,对了,跟着MS 的唯一的好处就是 他们在升级的时候总是对他们的以前的系统进行了很好的 兼容,除了因为引用了 ado.net 而使得数据库的操作 改变的比较多以外,其他的代码基本上都没有什么大的改变,糟糕 说道这里 就说错了一句话,不是没有什么大的改动,变化还是很大的,只不过对以前兼容了,我们这样的简单的应用,似乎也不会牵扯到什么复杂的改变的:)

[page_break]

asp+版本简单的留言板的制作(三)
/*
豆腐制作,都是精品
http://www.asp888.net 豆腐技术站
如转载,请保留版权信息
*/
现在该显示了,其实显示是很简单,只要看过豆腐前面文章的朋友应该都知道该怎么写这个程序,但是我在这里要强调的是 分页 的程序,我也和大家 一样,在开始的时候,想利用web form的数据绑定的功能,但是不幸的是,虽然用datagrid 实现绑定和分页都是很简单的,但是 datagrid显然形式上的Grid显然对 留言版 这样的程序是 不适合的,DBList 到是可以适合留言版的程序形式
但是 我查找了很长的时间 都没有找到如何去 实现分页的程序后来在 MSDN 上找到了 PagedDataSource 看看他的 Class Member 我都心惊肉跳,所有的我要的分页的功能他都已经提供了,但是我在调试的过程中,却怎么也 无法通过,估计是和我的 PDC 版本的原因,这个时候,我就想起了 开心(注:网友名称,他曾经建议我直接安装NGWS beta1 和 Vs7 beta1):)

希望大家如果在 Beta1 上调试成功了以后,一定要告诉豆腐

没有别的办法,我只好就去用我的老办法,用程序去控制,老天,我不想这样,但是我真的没有别的办法了

大家请看程序:
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Web.Security" %>
<%@ Import Namespace="System.Web.UI" %>
<%@ Import Namespace="System.Data.SQL" %>
<HTML><HEAD>
<script runat="server" language="VB">
dim sqlRead as SQLDataReader
dim intStart as integer
dim intLen as integer
dim intPageCount as integer
dim intRecCount as integer
Sub Page_Load(Src As Object, E As EventArgs)
Dim conn As SQLConnection
Dim Cfg as HashTable
Dim sqlcmd As SQLCommand

Cfg = Context.GetConfig("appsettings")
Conn = New SQLConnection(cfg("Conn"))

dim strSQL as string
'实在是没有办法,只好这样来获得 记录总数了
'根据NGWS的帮助上看 似乎有个PagedDataSource 好象功能挺强大
'但是 就是 不知道 应该怎么使用 也没有见过 用他的例子
strSQL="select count(*) as ccount from msgBoard"
sqlcmd = New SQLCommand(strSQL,conn)
sqlcmd.ActiveConnection.Open()
sqlcmd.execute(sqlRead)
sqlRead.Read()
intRecCount=cInt(sqlRead("ccount"))
sqlcmd.ActiveConnection.Close()
strSQL="select * from msgBoard order by msgid desc"
sqlcmd = New SQLCommand(strSQL,conn)
sqlcmd.ActiveConnection.Open()
sqlcmd.execute(sqlRead)


if isNumeric(request.querystring("start")) then
intStart=Cint(request.querystring("start")) '本页数据起使位置
else
intStart=0
end if

intLen=10 '每页需要显示的数据数量
'以下计算 当前的 记录的分页页数
if (intRecCount mod intLen)=0 then
intPageCount=intRecCount/intLen
else
intPageCount=(intRecCount-(intRecCount mod intLen))/intLen+1
end if
dim i as integer

上一个:使用纯粹的asp+语言制作的栏目管理(一)
下一个:将拖拽进行到底

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,