·天新网首页·加入收藏·设为首页
首页|笔记本|手机|数码相机|摄像机|MP3/MP4|主板|内存|显示器|办公|打印机|下载|开发|汽车|学院|业界
硬件|台式机|数码|数字家庭|投影仪|GPS/CPU|显卡|硬盘|服务器|网络|一体机|驱动|源码|游戏|考试|报价
您现在的位置:天新网 > 源码下载 > .Net源码 > 其他类别
软件名称 用vb.net写的留言簿(带代码和简单的说明)
运行环境 ASP环境
整理日期 2002年03月30日
软件语言
软件性质 共享软件
软件评级
软件大小 154K
开 发 商
联系方式
界面预览
下载次数 本日: 本周: 总计:
软件简介
2003-3-29----Guestbook开发文档,和和。

                    -------By Ganz http://ganz.my163.com

该留言簿没有管理功能,没有删除、修改等操作。如果要做怎么办?手工打开数据库进行操作或是自行添加相关的模块。

文件说明:
    index.ASPx
    index.aspx.VB       留言簿显示模块
    giveme.aspx
    giveme.aspx.vb     留言模块。
    Img/              存放头像的目录
  头像以数字序号命名,从1-60共60个,如第一个头像的文件名为1.gif,如果要添加新的头像,文件名从61开始。并修改GIVEME.ASPX.VB中的相关代码。

    Abc.mdb           数据库文件 (ACCESS2000格式)
       数据库中LY表是存放留言内容的,字段定义自己打开数据库看啦。

整个留言簿前后大概花了7天吧。
一、在没vs.Net前,最先完成留言模块giveme.aspx。历时2天。用editplus编写,当时手上除了SDK外,对。NET一无所知。
首次Page_load时,初始化头像选择控件—ddlpic的值。并设定默认的头像为0。(如果添加了新的头像,将60这个值增大。)
                For i = 1 To 60
                    ddlpic.Items.Add(i.ToString)
                Next
                ddlpic.SelectedIndex = 0
            End If
    
在留言者提交内容信息前,用了Requiredfieldvalidator控件验证是否填写了内容。否则会有相应的提示。

验证成功后,调用send_click过程。
1. 首先,对留言的内容做处理,禁止使用HTML标签。
。。。。。。
stxtname = HTMLEncode(txtname.Text)
            stxtaddr = HTMLEncode(txtaddr.Text)
            stxtQQ = HTMLEncode(txtqq.Text)
            stxtemail = HTMLEncode(txtemail.Text)
            stxthttp = HTMLEncode(txthttp.Text)
           stxtcontent = HTMLEncode(content.Text)
。。。。。。
htmlEncode过程取自动网论坛中的相关代码。
2. 产生一条插入的sql语句,调用CreateMyOleDbCommand过程,将留言内容保存到数据库中。
     Public Sub CreateMyOleDbCommand(ByVal myExecuteQuery As String, _
        ByVal myConnectionString As String)
            Dim myConnection As New OleDbConnection(myConnectionString)
                      定义连接。
            Dim myCommand As New OleDbCommand(myExecuteQuery, myConnection)
                     定义连接的command。因为只是单纯的执行SQL语句,只需一个COMMAND就可完成。
            myCommand.Connection.Open()
                     打开连接。使用COMMAND前必须做此操作,这不同于使用数据适配器,会自动的打开连接和关闭连接。
            myCommand.ExecuteNonQuery()
                      执行SQL语句。
            myConnection.Close()
                      关闭连接。
        End Sub
 CreateMyOleDbCommand需要两个字符串参数:
    myExecuteQuery:需要执行的SQL语句,
myConnectionString:数据库的连接字符串。
在本留言簿中,因为数据库使用ACCESS,连接字符串为
Dim mySelectConn As String = _
           "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("abc.mdb")
        
3. 保存后,返回index.aspx 。
 Response.Redirect("index.aspx")


二、index.aspx
显示模块经历2次大的变动。
首次:当时并不知道可以使用数据绑定控件,DATALIST,REPEATER等。用DataGrid取得数据源后,靠循环语句和动态添加TABLE,TABLECELL ,TABLEROW等完成留言内容的显示。虽然使用DataGrid(主要是VIEWSTATE太大了)速度很慢,但不用写分页的代码,还凑和。
看了喳喳鸟用C#写的留言簿后,朋友MAIL了个用REPEATER的例子。怎样修改显示部分有了初步的计划。
gar.Fill(myDataSet, i, iPageSize, "soft"),用OleDbDataAdapter填充DataSet时,不必读取整张表的记录,可以指定记录的起始行数(I)和要取的记录数(PAGESIZE);不必再动态添加控件了,使用repeater就可完成相等同的操作。repView.DataSource = myDataSet.Tables("soft")
分页:参照ASP中的分页代码。
1、 先说怎样完成分页的。首先取得留言总的记录数,将记录数保存到一个隐藏的LABEL中(和和,还可以用VIEWSTATE,SEESION来完成。待在CSDN里面绝对有收获。)。取得记录数,除以每页显示的记录数PageSize,填充dropdownlist控件-DLPAGE。
i = myDataSet.Tables("soft").Rows.Count
            lblRecordCount.Text = i.ToString
            j = i
            i = i / iPageSize
            If (i * iPageSize) > j Then i = i - 1
            For j = 0 To i
                dlPage.Items.Add(j.ToString)
       Next
另外,还隐藏了一个label控件,lblPageIndex,用于保存当前显示的分页数。

完成过程: 在单击分页按钮或是DLPAGE选择分页时,设置控件lblPageIndex的值,并调用数据绑定过程dgDataBind()。
   A.取得要显示分页的记录 。
        i = CInt(lblPageIndex.Text) * iPageSize
        Dim myDataSet As New DataSet()
        Dim gconn As New OleDbConnection(constr)
        Dim gar As New OleDbDataAdapter("select  * from ly order by 时间 desc", gconn)
        If (i + iPageSize) > CInt(lblRecordCount.Text) Then
            gar.Fill(myDataSet, i, CInt(lblRecordCount.Text) - i, "soft")
        Else
            gar.Fill(myDataSet, i, iPageSize, "soft")
        End If
     I:起始记录行数。
B、绑定REPEATER。
        repView.DataSource = myDataSet.Tables("soft")
        repView.DataBind()
    数据绑定。
        gconn.Close()    关闭打开的连接。
             (这一句好像是没必要,使用数据适配器填充数据时,会自动找开连接,和关闭连接。)

        dlPage.SelectedIndex = CInt(lblPageIndex.Text) 

2、 REPVIEW数据绑定后,前端显示数据。

<asp:repeater id="repView" runat="server" EnableViewState="False">
< ItemTemplate>
   。。。。。。。。
<%# databinder.Eval(Container,"dataitem(5)") %>
   。。。。。。。。
</ ItemTemplate>
</repeater>

<%# databinder.Eval(Container,"dataitem(5)") %> 这句还可以这样写:
<%#databinder.Eval(Container.dataitem,"留言内容")%>


整个留言簿的运作大致如此,能运行,没有大的错误。两周后再来看这些代码 ,觉得很乱,变量和控件的定义没有规范。许多语句可以改进,如取得留言总的记录数,用”select count(*) from ly”就可以了,不必取整张表的记录,再来统计;分页技术上,还有欠缺。

下载链接
杭州电信下载
北京电信下载
广州电信下载
南昌电信下载
云南电信下载
武汉电信下载
相关内容
Google
 
关于我们 | 联系我们 | 广告服务 | 工作机会 | 版权声明 | 欢迎投稿 | 网站地图
Copyright © 2000-2008 , www.21tx.com , All Rights Reserved .
© 晨新科技 版权所有 Created by TXSite.net