1.各个输入文本框添加是否为空的判断,不可为空;
2.注意尽量符合命名规范;
3.尽量做好注释,方便程序阅读和以后的修改;
4.做好上传文件大小的限制;
5.在编写前台代码时加上注释头文件,以方便二次修改;
6.注意每个页面的title;
7.注意前台显示字符串长度;
8.需要输出显示时间的存储过程请将时间如下输出:
CONVERT(varchar(10),AddTime,120) AS AddTime;
9.需要在前台显示标题的存储过程,如果可能出现标题过长,导致页面变形的情况的话,可用如下存储过程输出文章标题
case
when len(NewsTitle)>20 then left(NewsTitle,20)+'...'
when len(NewsTitle)<21 then NewsTitle
end
AS NewsTitle;
或在前台输出时控制字数多少。
10.注意输入标题的长度限制
11.注意表格的强制换行
12.写类似添加或修改的存储过程时注意被添加或修改的数据是否在表中已存在,如果已存在,则提示已有该数据,通过存储过程返回值来判断。
13.为了维护方便起见,能在前台写的东西不要放到程序里去生成。比如链接、表格等...
14.进行字符(反)替换,按原样显示。
15.DataGrid选定列特殊样式显示。
If (e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem) Then
e.Item.Attributes.Add("onmouseover", "this.style.backgroundColor='#E4EDF9'")
e.Item.Attributes.Add("onmouseout", "this.style.backgroundColor='#F
End If
16.用以下样式显示分页效果
第 页/共 页 本页 条/共 条 首页 上一页 下一页 尾页
前台代码如下:
<asp:panel id="pnlPage" runat="server">
<asp:Label id="lblPage" runat="server"></asp:Label>
<asp:linkbutton id="lbtnFirst" onclick="LBtnNavigation_Click" runat="server" CommandName="First">首页</asp:linkbutton>
<asp:linkbutton id="lbtnPrev" onclick="LBtnNavigation_Click" runat="server" CommandName="Prev">上一页</asp:linkbutton>
<asp:linkbutton id="lbtnNext" onclick="LBtnNavigation_Click" runat="server" CommandName="Next">下一页</asp:linkbutton>
<asp:linkbutton id="lbtnLast" onclick="LBtnNavigation_Click" runat="server" CommandName="Last">尾页</asp:linkbutton>
转到
<asp:TextBox id="txtToPage" runat="server" Width="25px" Height="20px" MaxLength="9"></asp:TextBox>页
<asp:LinkButton id="lbnGO" runat="server">GO</asp:LinkButton>
<asp:dropdownlist id="dlstPage" runat="server" AutoPostBack="True">
<asp:ListItem Value="10">每页显示10条</asp:ListItem>
<asp:ListItem Value="20" Selected="True">每页显示20条</asp:ListItem>
<asp:ListItem Value="50">每页显示50条</asp:ListItem>
<asp:ListItem Value="100">每页显示100条</asp:ListItem>
</asp:dropdownlist></asp:panel>
后台代码如下:
Dim pageCount As Integer '总页数
Dim recordCount As Integer '总条数
#Region " 绑定分页 "
Protected Sub BindData(ByVal DsetData As System.Data.DataSet)
'获取当前的总记录条数
recordCount = DsetData.Tables(0).Rows.Count
'获取当前的页数
pageCount = CInt(Math.Ceiling(recordCount * 1.0 / dgrdRegister.PageSize))
'避免纪录从有到无时,并且已经进行过反页的情况下CurrentPageIndex > PageCount出错
If recordCount = 0 Then
dgrdRegister.CurrentPageIndex = 0
ElseIf dgrdRegister.CurrentPageIndex >= pageCount Then
dgrdRegister.CurrentPageIndex = pageCount - 1
End If
NavigationStateChange()
End Sub
'初始化页码按钮
Protected Sub NavigationStateChange()
If recordCount <= dgrdRegister.PageSize Then '( RecordCount <= PageSize )//小于等于一页
lbtnFirst.Enabled = False
lbtnPrev.Enabled = False
lbtnNext.Enabled = False
lbtnLast.Enabled = False
Else '有多页
If dgrdRegister.CurrentPageIndex = 0 Then '当前为第一页
lbtnFirst.Enabled = False
lbtnPrev.Enabled = False
lbtnNext.Enabled = True
lbtnLast.Enabled = True
ElseIf dgrdRegister.CurrentPageIndex = pageCount - 1 Then '当前为最后页
lbtnFirst.Enabled = True
lbtnPrev.Enabled = True
lbtnNext.Enabled = False
lbtnLast.Enabled = False
Else '中间页
lbtnFirst.Enabled = True
lbtnPrev.Enabled = True
lbtnNext.Enabled = True
lbtnLast.Enabled = True
End If
End If
Dim intPageCount As Integer
Dim intPageIndex As Integer
Dim intPageSize As Integer
Dim intRecordCount As Integer
If recordCount = 0 Then '当没有纪录时DataGrid.PageCount会显示1页
intPageCount = 0
intPageIndex = 0
intPageSize = 0
intRecordCount = 0
Else
intPageCount = pageCount
intPageIndex = dgrdRegister.CurrentPageIndex + 1 '在有页数的情况下前台显示页数加1
If intPageIndex = pageCount Then
intPageSize = recordCount - (pageCount - 1) * dgrdRegister.PageSize
Else
intPageSize = dgrdRegister.PageSize
End If
intRecordCount = recordCount
End If
lblPage.Text = "第" & intPageIndex & "页/共" & intPageCount & "页 本页" & intPageSize & "条/共" & intRecordCount & "条"
End Sub
'翻页
Protected Sub LBtnNavigation_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim btn As LinkButton = CType(sender, LinkButton)
Select Case btn.CommandName
Case "First"
dgrdRegister.CurrentPageIndex = 0
Case "Prev" 'if( PageIndex > 0 )
dgrdRegister.CurrentPageIndex = dgrdRegister.CurrentPageIndex - 1
Case "Next" 'if( PageIndex < PageCount -1)
dgrdRegister.CurrentPageIndex = dgrdRegister.CurrentPageIndex + 1
Case "Last"
dgrdRegister.CurrentPageIndex = dgrdRegister.PageCount - 1
End Select
BindData()
End Sub
'分页
Private Sub dlstPage_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dlstPage.SelectedIndexChanged
dgrdRegister.PageSize = CInt(dlstPage.SelectedValue)
txtToPage.Text = ""
dgrdRegister.CurrentPageIndex = 0
BindData()
End Sub
'跳转页
Private Sub lbnGO_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lbnGO.Click
Dim ToPage As Integer
If txtToPage.Text.Trim <> "" Then
If IsNumeric(txtToPage.Text) Then
ToPage = CInt(txtToPage.Text.Trim)
If ToPage <= pageCount Then
Try
dgrdRegister.CurrentPageIndex = ToPage - 1
dgrdRegister.BindData()
Catch ex As Exception
Response.Write("<script language='javascript'>alert('输入的页数不能小于等于0');history.back();</script>")
Response.End()
End Try
Else
Response.Write("<script language='javascript'>alert('您输入的页码不能大于页数');history.back();</script>")
Response.End()
End If
Else
Response.Write("<script language='javascript'>alert('输入的页码数为必须数字');history.back();</script>")
Response.End()
End If
End If
End Sub
#End Region
注释头样式:
'***********************************************************************
' Module: Disease.vb
' Author: 赵国亮
' Modified:
' Purpose: Definition of the Class
' Comment: Web层数据层前台显示。
'***********************************************************************
DataAccess层样式:
'----------------------------------------------------------------
' Name: UpdateKeyKnowledge(ByVal KnowledgeID As Integer, ByVal objKnowledge As Sanitation.DataAccess.Key.Key)
' Description: 根据SeriaNo修改指定的知识,成功返回1,失败返回0
' Parameters:
' [ByVal] objKeyKnowledge -
' Return: Integer
'----------------------------------------------------------------
Public Function UpdateKeyKnowledge(ByVal KnowledgeID As Integer, ByVal objKnowledge As Sanitation.DataAccess.Key.Key) As Integer
' TODO : 调用存储过程:p_Update
'建立连接
Dim conn As SqlConnection = New SqlConnection(ConnectionString)
Dim cmd As SqlCommand = New SqlCommand("p_Update", conn)
cmd.CommandType = CommandType.StoredProcedure
'传递参数
Dim param As SqlParameter
'------------------------------------对Knowledge表进行修改操作---------------------------------
param = cmd.Parameters.Add("@KeyKnowledgeID", SqlDbType.Int)
param.Value = KnowledgeID ' 编号
param = cmd.Parameters.Add("@KeyKnowledgeTitle", SqlDbType.VarChar)
param.Value = objKnowledge.KnowledgeTitle ' 标题
param = cmd.Parameters.Add("@KeyKnowledgeContent", SqlDbType.Text)
param.Value = objKnowledge.KnowledgeContent ' 内容
Dim cmm As Integer
'打开连接
conn.Open()
cmm = cmd.ExecuteNonQuery
'关闭连接
conn.Close()
'返回函数值
If cmm > 0 Then
Return 1
Else
Return 0
End If
End Function
页面注意
1.添加,删除,返回等按钮使用圆角图片按钮;
2.各个DataGrid外表格的宽度为95%,居中;
3.各个DataGrid头部加入正确背景;
4.文本显示要注意添加强制换行;
后台DataGrid中背景色
DataGrid #FFFFFF
页眉 #E4EDF9
普通项 #F
测试注意问题
1.越权;
2.页面样式;
3.按钮对应功能;
4.每个页面的title;
5.上传文件大小的限制;
6.各个输入文本框添加是否为空的判断;
7.空数据情况下页面显示是否正常,功能是否正常;
8.少数据情况下页面显示是否正常,功能是否正常;
9.多数据情况下页面显示是否正常,功能是否正常;
10.不同用户登陆后所见功能及操作是否正常;
11.功能是否全面;
每个页面都要做详细测试,并多多注意!
12.所有页面中有文本添加的地方,在前台是否按原样显示。
13.权限控制
用例1:
用例名称 |
无登录权限测试 |
操作步骤 |
1) 登录后打开要测试的页面,右键选择页面的属性,复制页面的地址。 2) 退出登录(清空cookies),在浏览器地址栏粘贴页面地址打开页面。 |
应当返回结果 |
弹出对话框提示无权限,并终止页面的显示。 |
用例2:
用例名称 |
有登录权限测试 |
操作步骤 |
1) 登录后打开要测试的页面,右键选择页面的属性,复制页面的地址。 2) 以没有权限的用户登录,在浏览器地址栏粘贴页面地址打开页面。 |
应当返回结果 |
弹出对话框提示无权限,并终止页面的显示。 |
14. 特殊字符
用例1:
用例名称 |
输入特殊字符 |
操作步骤 |
在标题或内容中输入特殊字符: 1、 空格 2、 </td></tr></table> 3、 <span onclick="alert('test');">test</span> |
应当返回结果 |
进行字符(反)替换,按原样显示。或去掉标题中的空格(trim) |
用例2:
用例名称 |
输入连续英文字符 |
操作步骤 |
在标题或内容中输入特殊字符: 如:ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt |
应当返回结果 |
用 <table style="table-layout:fixed; word-break:break-all; word-wrap:break-word;"> <tr><td>test </td></tr> </table> 控制,不使表格变形! |