首页 新生命讲座 ASP学习 Net编程 我的垃圾工具 我的宝贝 系统编程
编译原理 其它文章
 -> 首页 -> 新生命讲座
CMS2.0开发进行时之三--ORM应用实例
作者:大石头   来源:   发布时间:2007-9-19 15:06:39   共有278位读者阅读过此文


ORM作为Gen3.0最大的一个亮点,它大大减少了开发人员所需要编写的代码量,代码更短小精悍,结构化更强。

下面是一个拥有基本的添删改查功能的页面代码:

以下是代码片段:

<!--#include file = "/CMS/Gen/Interface.asp" -->
<!--#include file = "/CMS/Gen/Novel/Class_Author.asp" -->
<!--#include file = "/CMS/Gen/Novel/inc.asp" -->
<%
 Dim Author
 Set Author = New Class_Author

 Call Header
 Select Case F.Act
 Case "addform"
  Call Form("add")
 Case "editform"
  Call Form("edit")
 Case "add"
  Call Add
  Call List
 Case "edit"
  Call Edit
  Call List
 Case "del"
  Call Del
  Call List
 Case "deletebatch"
  Call DeleteBatch
  Call List
 Case Else
  Call List
 End Select
 Call Foot
 
 Sub SearchForm()
%>
<form method="post" action="?Act=Search">
<table border="0" align="center" cellpadding="1" cellspacing="0" class="ListView">
 <tbody>
   <tr align="center" bgcolor="#DDF1D8">
       <td><B>姓名:</B></td>
       <td><input name="SearchAuthorName" type="text" value="<%=F.R("SearchAuthorName", fForSQL)%>" class="colorinput" /></td>
       <td><input name="" type="submit" value="查询" />&nbsp;<input name="" type="button" value="所有" onclick="location.href='<%=F.SelfName%>';" /></td>
    </tr>
 </tbody>
 </table>
 </form>
<%
 End Sub

 Sub List()
  Call SearchForm
  
  Dim authors, pageindex, condition
  pageindex = F.R("PageIndex", fInt)
  If pageindex<1 Then pageindex=1
  condition = F.R("SearchAuthorName", fForSQL)
  If Not F.IsNullOrEmpty(condition) Then condition = "AuthorName like '%" & condition & "%'"
  authors = Author.GetList(condition, false, (pageindex-1)*PerPage, PerPage)
  If Not IsArray(authors) Then Alert "没有数据!", "":Exit Sub
%>
<table border="0" align="center" cellpadding="1" cellspacing="0" class="ListView">
   <thead>
   <tr align="center">
       <th colspan="5">作者管理</th>
    </tr>
 </thead>
 <tbody>
   <tr align="center" bgcolor="#DDF1D8">
       <td width="30" align="center"><B>编号</B></td>
       <td width="150"><B>姓名</B></td>
       <td width="50"><B>性别</B></td>
       <td width="30" align="center"><a href='?Act=AddForm'>添加</a></td>
       <td width="50" align="center"><input name="SelectAll" type="checkbox" value="" onclick="OnSelectAll();" /><a onclick='OnDeleteAll();'>全删</a></td>
    </tr>
<%
 Dim color(1), kk
 color(0) = "#FFFFFF"
 color(1) = "#DDF1D8"
 For kk=0 To Ubound(authors)
%>
<tr align="center" bgcolor="<%=color(kk mod 2)%>" onmouseover="this.bgColor='#FFCC99';" onmouseout="this.bgColor='<%=color(kk mod 2)%>';">
   <td><%=authors(kk).ID%></td>
   <td align="left"><%=authors(kk).AuthorName%></td>
   <td align="left"><%=authors(kk).Sex%></td>
   <td><a href='?Act=EditForm&ID=<%=authors(kk).ID%>'>修改</a></td>
   <td><input name="SelectAllItem" type="checkbox" value="<%=authors(kk).ID%>" /><a href='?Act=Del&ID=<%=authors(kk).ID%>' onclick='return confirm("删除将不可恢复\n确定删除?");'>删除</a></td>
</tr>
<%
 Next
 
 Dim AuthorCount, PageCount
 AuthorCount = Author.SelectCountByCondition(condition)
 PageCount = (AuthorCount-1)\PerPage+1
%>
</tbody>
<tfoot>
<tr bgcolor="#DDF1D8" align="right"><td colspan="5">
<input type="button" value="首页" onclick="return SetPage(1);" />
<input type="button" value="前一页" onclick="return IncPage(-1);" />
<input id="PageIndex" class="colorinput" style="text-align:right;width:30px;" type="text" title="输入页码" value="<%=pageindex%>" onkeypress="return (window.event.keyCode>=48&&window.event.keyCode<=57);" onchange="if(this.value=='')this.value=1;">/<span title="总页数"><%=PageCount%></span>&nbsp;(<span title="总记录数"><%=AuthorCount%></span>)
<input type="button" value="跳转" onclick="return IncPage(0);" />
<input type="button" value="下一页" onclick="return IncPage(1);" />
<input type="button" value="末页" onclick="return SetPage(-1);" />
<input type="hidden" value="<%=PageCount%>" id="PageCount" />
</td></tr>
</tfoot>
</table><%
 End Sub
 
 Sub Form(act)
  If act="edit" Then
   Author.GetFromRequest
   If Author.ID<1 Then Alert "非法参数!", F.SelfName:Exit Sub
   If Not Author.GetData(Author.ID) Then Alert "数据不存在!", F.SelfName:Exit Sub
  End If
%>
<form action="?Act=<%=act%>" method="post">
<table align="center" class="ListView">
<thead>
<tr>
<th colspan="2" align="center">作者</th>
</tr>
</thead>
<tbody>
<tr>
<td>姓名:</td>
<td><input name="AuthorName" type="text" value="<%=Author.AuthorName%>"></td>
</tr>
<tr>
<td>性别:</td>
<td>
<input name="Sex" type="radio" value="男" <%If Author.Sex<>"女" Then%>checked<%End If%>>男
<input name="Sex" type="radio" value="女" <%If Author.Sex="女" Then%>checked<%End If%>>女
</td>
</tr>
<tr>
<td>介绍:</td>
<td><textarea name="Intro" cols="50" rows="5"><%=Author.Intro%></textarea></td>
</tr>
<tr>
<td colspan="2" align="center">
<%If act="edit" Then%>
<input name="ID" type="hidden" value="<%=Author.ID%>">
<input value="保存" type="submit">
<%Else%>
<input value="添加" type="submit">
<%End If%>
&nbsp;<input type="button" value="返回" onClick="location.href='<%=F.SelfName%>';" />
</td>
</tr>
</tbody>
</table>
</form>
<%
 End Sub
 
 '编辑
 Sub Edit()
  Author.GetFromRequest
  If Author.ID<1 Then Alert "非法参数!", "-1":Exit Sub
  If Not Author.GetData(Author.ID) Then Alert "数据不存在!", "-1":Exit Sub
  '检查ID是否存在时,对象内的数据已被数据库的数据填充,需要重新获取请求的数据
  Author.GetFromRequest
  Author.Update()
 End Sub
 
 '添加
 Sub Add()
  Author.GetFromRequest
  If Author.GetDataByCondition("AuthorName='" & Author.AuthorName & "'") Then Alert "姓名已存在!", "-1":Exit Sub
  Author.Insert
 End Sub

 '删除
 Sub Del()
  Author.GetFromRequest
  If Author.ID<1 Then Alert "非法参数!", "":Exit Sub
  If Not Author.GetData(Author.ID) Then Alert "数据不存在!", "":Exit Sub
  Author.Delete Author.ID
 End Sub

 '批量删除
 Sub DeleteBatch()
  If F.IsNullOrEmpty(F.R("ID", fNo)) Then Alert "非法参数!", "":Exit Sub
  If Instr(F.R("ID", fNo), ",")<1 Then Alert "非法参数!", "":Exit Sub
  Dim ids, kk
  ids = Split(F.R("ID", fNo), ",")
  '保证全部都是数字,避免SQL注入
  For kk=0 To UBound(ids)
   ids(kk) = CInt("0" & ids(kk)) & ""
  Next
  Author.DeleteByCondition "ID In(" & Join(ids, ",") & ")"
 End Sub
%>


评论
hh 2008-1-8 21:39:21
yh

发表评论
网名:
评论:
    
新生命 CMS1.0 Build0920 版权所有 All Copyrights @2006 桂ICP备06011573号
站长:大石头 信箱:gxuhy@21cn.com QQ:99363590