Quickwork For Asp -实战之后台管理
作者:thinkothers 来源:经典论坛 发布时间:2009-12-31 19:13:00
最近开始在项目中使用Quickwork For Asp,虽然该框架是自己独立完成的,不过功能没做过详细的总结,所以很多参数总是会弄错,毕竟鱼跟熊掌不可兼得,功能的灵活必然需要记忆更多的函数或参数,不过总的来说还算是顺利,该框架在实际应该中暂时还没有大的问题,体会就是大大优化了代码结构,代码重用性也得到很大的提高,最大程度的HTML与程序分离。
下面给出对于一个表的添、改、删、查操作的相关文件代码.本例旨在了解框架的结构流程,因此代码中未做详细注释,如果你还不熟悉Quickwork For Asp,可以去官方博客了解一下,http://www.anyyes.cn/quick/
附上页面截图:
mod文件-mod_admin_mods.asp
<%
'模块名 admin_mods
'功能 设置管理员菜单及模块集
class admin_mods
'public 模板内调用
public title,info
private db,arr
private sub class_initialize()
set db = new cls_db
title = "模板管理"
info = "除非您十分熟悉模块的作用,否则请不要随意更改."
end sub
private sub class_terminate()
set db = nothing
end sub
'private 本类内调用
private function str_select(slt)
dim db : set db = new cls_db
str_select = db.findall("select id,cname from [] where parentid=0 order by orders asc@[select=,"&slt&"]")
set db = nothing
end function
'默认模块,显示列表信息
function default()
arr = array("id:list","sql:select id,cname,ename,parentid,ishidn,orders from [] order by orders asc","msg:暂无数据","page")
default = array("admin_admin_mods.html","[loop]",arr)
end function
'显示添加表单
function add_form()
add_form = array("admin_admin_mods_form.html","ishidn","0","orders","0","select",str_select(""))
end function
'执行添加表单提交后添加操作
function add()
arr = array("[]","cname|null","ename|null","parentid|int","ishidn|int","orders","adddate")
if db.add(arr) then call top_alert("已添加",let_(","))
end function
'显示编辑表单,与添加表单共用同一个模板
function up_form()
if not isnum(get_("id")) then call top_back("参数错误")
arr = db.find("id,cname,ename,parentid,ishidn,orders;"&get_("id")&"")
up_form = array(_
"admin_admin_mods_form.html",_
"select",str_select(arr(3)),_
"id",arr(0),_
"cname",arr(1),_
"ename",arr(2),_
"parentid",arr(3),_
"ishidn",arr(4),_
"orders",arr(5)_
)
end function
'执行修改表单提交后修改操作
function update()
if not isnum(f("id")) then call top_back("参数错误")
arr = array("[]",f("id"),"cname|null","ename|null","parentid|int","ishidn|int","orders")
if db.update(arr) then call top_alert("已修改",let_(","))
end function
'执行删除操作
function del()
if isn(get_("id")) then call top_back("参数错误")
db.del(get_("id")) : call top_alert("已删除",let_(","))
end function
end class
%>
模板文件-添加和修改的表单-admin_admin_mods_form.html
<h1>{.title} <span>{.info}</span></h1>
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="list">
<form action="{!form_auto_action}" method="post" >
<tr class="info">
<td colspan="2">{!btn_back}</td>
</tr>
<tr class="title"><td colspan="2" style="background-image:none" class="green">请参照表单右侧提示填写,带 * 号内容为必填项</td></tr>
<tr>
<td width="90" align="right">模块名称</td>
<td>{!f_input_auto("cname")} <span>* 模块中文名称,即菜单名</span></td>
</tr>
<tr>
<td align="right">英文名</td>
<td>{!f_input_auto("ename")} <span>* 模板英文名称,即mod名</span></td>
</tr>
<tr>
<td align="right">选择父模块</td>
<td><select name="parentid" style="width:223px"><option value="0">父模块</option>{$select}</select> <span>* 如为父模块,请选择"父模块"</span></td>
</tr>
<tr>
<td align="right">排序</td>
<td>{!f_input_auto("orders")} <span>* 必须为整数;父子模块全局排序,请慎重填写;数字越小越靠前</span></td>
</tr>
<tr>
<td align="right">是否隐藏</td>
<td>{!form_select_is("ishidn","是|否",{$ishidn})} <span> * 技术人员专用选项,选择隐藏后该模块不会显示在菜单列表中,一般情况请选择否</span></td>
</tr>
<tr class="info">
<td>{!f_hidden_id}{!btn_back}</td><td>{!btn_submit}{!btn_reset}</td>
</tr>
</form>
</table>
模板文件-列表页-admin_admin_mods.html
<h1>{.title} <span>{.info}</span></h1>
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="list">
<tr class="info">
<td colspan="6">{!btn_add}{!btn_del_select}</td>
</tr>
<tr class="title">
<td width="10">{!btn_select_all}</td>
<td width="70">操作</td>
<td width="25%">模块名称</td>
<td width="25%">英文名</td>
<td width="15%">是否隐藏</td>
<td style="background-image:none">排序</td>
</tr>
{loop id="list"}
<tr>
<td><input type="checkbox" name="select_id" value="[0]" /></td>
<td>{bar_auto_action([0])}</td>
<td>{iff([3] = 0,[1],"----" & [1])}</td>
<td>[2]</td>
<td>{iff([4]=0,"否","是")}</td>
<td>[5]</td>
</tr>
{/loop}
<tr class="page">
<td colspan="6">{$page}</td>
</tr>
<tr class="info">
<td colspan="6">{!btn_add}{!btn_del_select}</td>
</tr>
</table>
部分全局性质的函数,因为后台管理中很多页面都需要用到删除已选,提交,重置、修改、删除等按钮而且是一成不变的,所以将他们做成了函数,以方便日后管理。
function form_auto_action()
dim tmp
tmp = iff(action_ = "add_form","add","update")
form_auto_action = "index.asp" & let_(","&tmp)
end function
function form_select_is(name,str,chd)
dim arr(1,1)
arr(0,0) = 1
arr(1,0) = split(str,"|")(0)
arr(0,1) = 0
arr(1,1) = split(str,"|")(1)
form_select_is = f_radio(name,arr,chd)
end function
function btn_add()
btn_add = "<input value=""» 新建"" onclick=""location.href='" & let_(",add_form") & "'"" class=""btn"" type=""button"" />"
end function
function btn_del_select()
btn_del_select = "<input value=""× 删除已选"" link=""" & let_(",del,id=") & """ name=""btn_del_select"" class=""btn"" type=""button"" />"
end function
function btn_select_all()
btn_select_all = "<input type=""checkbox"" id=""select_all"" value=""1"" title=""选中/取消选中"" />"
end function
function btn_back()
btn_back = "<input value=""« 返回"" onclick=""history.back()"" class=""btn"" type=""button"" />"
end function
function btn_submit()
btn_submit = "<input value=""» 确 定"" class=""btn"" type=""submit"" />"
end function
function btn_reset()
btn_reset = "<input value=""« 重设"" class=""btn"" type=""reset"" />"
end function
function bar_auto_action(id)
bar_auto_action = "<a href=""" & let_(",up_form,id=" & id) & """ title=""修改""><img src=""images/a_up.gif"" border=""0"" onmouseover=""this.src='images/a_up_on.gif'"" onmouseout=""this.src='images/a_up.gif'"" /></a> <a href=""" & let_(",del,id=" & id) & """ name=""a_del"" title=""删除""><img src=""images/a_del.gif"" onmouseover=""this.src='images/a_del_on.gif'"" onmouseout=""this.src='images/a_del.gif'"" border=""0"" /></a>"
end function
function f_hidden_id()
f_hidden_id = "<input type=""hidden"" name=""id"" value=""" & get_("id") & """ />"
end function
function f_input_auto(name)
f_input_auto = "<input name="""&name&""" type=""text"" class=""text"" size=""40"" value=""{$"&name&"}"" />"
end function
function top_back(s)
die(top_show_msg & "<script>show_msg('"&s&"','back')</script>")
end function
function top_alert(s,url)
die(top_show_msg & "<script>show_msg('"&s&"','"&url&"')</script>")
end function
function top_show_msg()
top_show_msg = "<script>function show_msg(str,url) {f = window.parent.window[0].document.getElementById('msginfo');f.style.display = 'block';f.innerHTML = str;if (url == 'back') {history.back();} else if (url == 'reload') {window.location.reload();} else {location.href = url}}</script>"
end function
模板引擎中有三种标签形式
{$abc}指定的替换标签
{!abc}全局性质的变量,如const、或者函数库中的函数等
{.abc}本模块类中的public 成员或函数,如例中{.title}即为mod文件中的public title
猜你喜欢
- 在Python语言中最常见的括号有三种,分别是:小括号()、中括号[]、花括号{};其作用也不相同,分别用来代表不同的Python基本内置数
- Declaring class members or methods as st
- 前面已经了解了关于PL/SQL编程的基础,本文将结合一个案例来加深对这些知识点的理解。一. 案例介绍 某数据库有两张表,是关于某公司员工资料
- 1. 前言在执行一些 IO 密集型任务的时候,程序常常会因为等待 IO 而阻塞。比如在网络爬虫中,如果我们使用 requests 库来进行请
- 前言CORS 即 Cross Origin Resource Sharing 跨域资源共享.跨域请求分两种:简单请求、复杂请求.简单请求简单
- 一、外键设置方法1、在MySQL中,为了把2个表关联起来,会用到2个重要的功能:外键(FOREIGN KEY)和连接(JOIN)。外键需要在
- 本文实例讲述了Python实现向QQ群成员自动发邮件的方法。分享给大家供大家参考。具体实现方法如下:原理:我们需要先获取QQ群中的所有成员并
- 1、安装mysql5.7CentOS 7之后的版本yum的默认源中使用MariaDB替代原先MySQL,因此安装方式较为以往有一些改变:下载
- 开发Web应用时,你经常要加上搜索功能。甚至还不知能要搜什么,就在草图上画了一个放大镜。搜索是项非常重要的功能,所以像elasticsear
- 结合order by关键词和limit关键词是可以解决很多的topN问题,比如从二手房数据集中查询出某个地区的最贵的10套房,从电商交易数据
- 表单外观的美化很多时候,我们仅仅为了实现数据采集这个功能来使用表单,常看到的表单都是“千人一面”、毫无
- 内网的主机都是自动分配ip地址,有时候需要查看下有那些ip在使用,就写了个简单的脚本。linux和windows下都可以用,用多线程来pin
- 概述Object.freeze(obj)可以冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删
- 本文实例讲述了Python设计模式之代理模式。分享给大家供大家参考,具体如下:代理模式在一般形式上是一个类函数接口。代理可以是这些事物的接口
- 问题:输出新建的DataFrame对象时,DataFrame中各列的显示顺序和DataFrame定义中的顺序不一致。例如:import pa
- 前沿小补充例3.48 查询平均成绩大于等于80分的学生学号和平均成绩SELECT Sno,AVG(Grade)FROM SCWHERE AV
- 用html的form上传文件时,request.FILES为空,没有收到上传来的文件,但是在request.POST里找到了上传的文件名(只
- 前言前面我们介绍了 pandas 的基础语法操作,下面我们开始介绍 pandas 的数据读写操作。pandas 的 IO API 是一组顶层
- 1.背景在python运行一些,计算复杂度比较高的函数时,服务器端单核CPU的情况比较耗时,因此需要多CPU使用多进程加快速度2.函数要求笔
- 1.figure语法及操作(1)figure语法说明figure(num=None, figsize=None, dpi=None, fac