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=""&raquo;&nbsp;新建"" 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=""&laquo;&nbsp;返回"" onclick=""history.back()"" class=""btn"" type=""button"" />"
end function
function btn_submit()
    btn_submit = "<input value=""&raquo;&nbsp;确  定"" class=""btn"" type=""submit"" />"
end function
function btn_reset()
    btn_reset = "<input value=""&laquo;&nbsp;重设"" 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

标签:asp,后台,模块化,框架
0
投稿

猜你喜欢

  • 用Dreamweaver MX巧妙格式化表格

    2008-03-18 16:39:00
  • ASP JSON类源码

    2011-04-30 16:38:00
  • MySQL数据库只监听某个特定地址的方法

    2008-12-05 16:11:00
  • js表单提交显示进度条

    2007-09-18 13:10:00
  • 详解如何用SQLyog来分析MySQL数据库

    2008-10-13 12:35:00
  • 基于Oracle的面向对象技术入门基础简析开发者网络Oracle

    2010-07-18 12:57:00
  • asp select下拉菜单选择图标并实时显示

    2011-04-03 10:33:00
  • 分享几个字体设计

    2007-10-10 13:53:00
  • javascript图片预加载

    2009-08-30 12:47:00
  • Asp模板制作方法详解

    2007-10-11 19:05:00
  • SQL的Join使用图解教程

    2012-08-21 10:47:23
  • asp ajax跨域提交数据

    2011-04-11 10:56:00
  • 如何修改MySQL 5.1 data文件夹路径

    2010-10-25 19:58:00
  • asp中文URL编码server.urlencode

    2008-08-08 11:22:00
  • asp如何制作一个文本文件编辑器?

    2010-07-07 12:26:00
  • js“树”读取xml数据源码

    2007-08-04 19:42:00
  • asp中access升级到sql server后要做的工作

    2007-08-11 13:35:00
  • jQuery实现同一点击,两个不同链接,指向两个不同的iframe

    2010-06-21 10:52:00
  • VML模拟Rose画流程图代码

    2008-09-02 10:58:00
  • IE多版本共存的解决方案——IETester(推荐)

    2009-03-26 12:47:00
  • asp之家 网络编程 m.aspxhome.com