在线演示:http://demo.naturefw.com/

开源协议

  一直想说来着,可是总忘。开源协议采用 BSD开源协议

  一直在说开源,但只是把源码放出来了,连个开源协议都没说,虽然说了也基本等于没说。但是还是要说一下的。

  再有就是会陆续把文档完善出来。

版本说明

  稳定版的含义,指的是元数据的结构、对外接口(类名、函数名、参数等)稳定下来,以后的版本都会以这个版本为准,兼容这个版本的格式。

  那怎么又出来了beta1呢,那是因为虽然现在大部分都稳定了,但是还是有一些小地方没有最后确定,可能还会有点小的修改。所以用beta1来表示一下。估计还会在出几个beta版,最后出一个正式版。

  版本号。这次版本号统一设置为 2.0.4.0 。因为自然框架内部有几个项目,每个项目都有自己的版本,看起来有点乱,所以这次就硬性统一一下。前面的2.0表示自然框架是基于.net2.0的。4.x表示稳定版bata x。以后的正式版就是5.0了。即2.0.5.0   。

  下载地址:还是老地方,自然框架的源代码、Demo、数据库、配置信息管理程序下载(2010.01.25更新)

稳定版和以前版本的变化

  因为对基础做了一些修改,所以不能向下兼容了。不过以后的版本都会兼容这个版本的。

1、 元数据的结构
  主要改的是“字段扩展信息描述表”(Manage_Columns),ControlInfo字段的定义做了一些修改,所以以前的数据就不兼容了。具体的格式说明,后面会有详细的文档。

2、 元数据的管理方式
  以前是哪里需要了就在哪里写一个SQL语句,现在为元数据定义了一套实体类,通过这套实体类来获取相关的信息。

3、 配置信息管理程序的修改
  元数据的结构都改了,那么管理他的程序自然也要做相应的修改。

  这次提供下载的是自然框架源码、Demo、数据库。配置信息管理程序还需要在修改一下。

安装步骤

1、 数据库。
  数据库原先是SQL 2005的,但是有些兄弟说他们还没有安装SQL2005呢,所以这次改成了SQL2000的。您下载之后,直接附加即可。SQL2000、SQL2005都可以直接附加。

2、Demo
  IDE是VS2008,这个就不提供其他的版本了,如果您还在用VS2005,那么建议升一下吧,呵呵。如果还不能升级的话,那么可以用VS2005建立一个空的“项目”,然后把Demo里的文件全都附加进来,应该就可以了。注意不能建立“站点”。
文件解压后,需要修改web.config里面的连接字符串。

  数据库加上了,连接字符串也改完了,然后就可以运行了。

3、用户名、密码

管理员的账号:admin

密码:123

登录后可以到“系统管理”——“账户管理”里面查看用户,密码都是 123 。

  出错了怎么办?首先您可以看看根目录里的log文件夹里的文件,如果访问数据库出现了异常,那么会在这里有记录。另外需要把log文件夹设置为User账户可以“写入”。

  以前也发过Demo,不过没有明确的说明,可能您也不大知道要看什么,所以这次就详细的说一下可以看什么,就是Demo可以演示哪些功能。

Demo的四大看点:

1、 同一个页面。本篇会详细说明,后面的下一篇里说明。
2、 权限演示。权限到节点、按钮、列表字段,权限到记录。
3、 主从表演示。添加、修改主从表的一种方式。
4、 角色维护。如何建立一个角色,如何给角色设置账户。

===========================可爱的分隔符===========================

看点一:同一个页面

  整个页面采用古老的Frame的方式,上、左、右结构。

  使用Guest账号登录后可以看到三个大功能节点、六个小功能节点,比如角色管理、新闻维护等。您可能会觉得这六个节点需要有六个列表页面,但是这里只有一个列表页面(DataList1.aspx)。不信的话您可以在列表页面上点击鼠标右键查看一下“属性”。

【Guest账户登录后看到的“新闻维护”页面】

【Guest账户登录后看到的“文章目录”页面。和上面的是同一个列表页面。】

【管理员登录后看到的“新闻维护”页面,多了几个按钮】

  列表页面是通过一个参数fid来区分不同的功能节点的,比如“角色管理”对应的是“DataList1.aspx?fid=101”,“新闻维护”对应的是“DataList1.aspx?fid=301”。Fid就是FunctionID,就是以前我总提起的节点编号。

  不仅这六个节点可以使用这个DataList1.aspx页面,而且项目里的其他的列表都可以使用DataList1.aspx页面。您可能会觉得一个页面要支持这么多的节点,里面的代码一定很多、很复杂。其实不然,如果您下载了自然框架源码(BaseUI项目里)的话,就会发现DataList1.aspx里面仅有57行。代码如下:
【DataList1.aspx的代码】

代码

<%@ Page Language="C#"AutoEventWireup="true"CodeBehind="DataList1.aspx.cs"Inherits="Nature.UI.Common.DataList1"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><headrunat="server"><title><%=Lbl_Title.Text%></title><%=CssWeb%><scriptlanguage="javascript"type="text/javascript">varmyWin ;varDataID="-2";varisShowSearch=1;varForeignID=-2;<%=isShowSearch%>ForeignID="<%=this.DataID%>";</script><scriptlanguage="javascript"type="text/javascript"src="/public/js/buttonEvent.js"></script><scriptlanguage="javascript"type="text/javascript"src="/public/js/TableTR.js"></script><scriptlanguage="javascript"type="text/javascript"src="/public/js/My97DatePicker/WdatePicker.js"></script></head><bodyonload="myLoad()"><formid="form1"runat="server"><divstyle="width:100%; font-size:14pt; text-align: center;vertical-align:middle;"><br/><asp:LabelID="Lbl_Title"runat="server"style="font-size:14pt; "></asp:Label></div><Nature:OperationButtonBarID="ctl_CommonButtonBar"runat="server"/><divid="div_Search"style="display:none;"align="center"><br/><fieldsettitle="查询条件"style="PADDING-BOTTOM:6px;BORDER-RIGHT: #666 1px solid; BORDER-TOP: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BORDER-BOTTOM: #666 1px solid;"><legendstyle="font-size:9pt;">查询条件</legend><tablewidth="100%"align="center"border="0"bgcolor="#ffffff"><tr><td><Nature:MyFindid="ctl_CommonFind"runat="server"/></td><tdwidth="50"><asp:ButtonID="btn_Search"runat="server"Text=" 查 询 "/></td></tr></table></fieldset></div><div><Nature:MyGridID="ctl_CommonGrid"runat="server"/></div><div><Nature:QuickPagerID="ctl_CommonPager"runat="server"PageUIGO="GO"/></div><spanid="dd"></span><spanstyle="DISPLAY:none"><asp:buttonid="Btn_ToExcel"runat="server"Text="导出到Excel"onclick="Btn_ToExcel_Click"></asp:button><asp:buttonid="Btn_ToAccess"runat="server"Text="导出到Access"></asp:button><asp:buttonid="Btn_Reload"runat="server"Text="刷新本页"onclick="Btn_Reload_Click"></asp:button><asp:buttonid="Btn_ReloadFirst"runat="server"Text="刷新到第一页"onclick="Btn_ReloadFirst_Click"></asp:button><Nature:MyTextBoxid="Txt_isShowSearch"runat="server"/><iframeid="ifrmDel"name="ifrmDel"width="100"height="100"></iframe></span></form></body></html>

  主要内容是,引用js脚本文件,引用css文件,一个Label,四个自定义控件(按钮组、查询控件、数据显示控件、分页控件),几个隐藏按钮组成,再有就是简单的布局了。

  页面效果由css来控制,这样更方便同美工配合,想要换页面效果,只需要更换css文件即可。而且这里也预留了一个“换皮肤”的功能。

后台代码DataList1.aspx.cs也不多,只有72行。代码如下:
【DataList1.aspx.cs的代码】

代码

usingSystem;namespaceNature.UI.Common
{
///<summary>///数据列表///</summary>publicpartialclassDataList1 : Base.BasePageList  
    {
///<summary>///是否显示查询条件///</summary>protectedstringisShowSearch="";//是否显示查询privatevoidPage_Load(objectsender, EventArgs e)
        {
base.ForeignID=this.DataID;
        }
#region刷新当前页面///<summary>///刷新当前页面///</summary>///<param name="sender"></param>///<param name="e"></param>protectedvoidBtn_Reload_Click(objectsender, System.EventArgs e)
        {
this.ctl_CommonPager.BindThisPageForAddDelete() ;
        }
///<summary>///显示第一页///</summary>///<param name="sender"></param>///<param name="e"></param>protectedvoidBtn_ReloadFirst_Click(objectsender, System.EventArgs e)
        {
this.ctl_CommonPager.BindFirstPage();
        }
#endregion#region查询///<summary>///查询事件///</summary>///<param name="sender"></param>///<param name="e"></param>publicoverridevoidBtn_Search_Click(objectsender, EventArgs e)
        {
base.Btn_Search_Click(sender, e);
            isShowSearch
="isShowSearch = 0;";
        }
#endregion#region导出到Excel///<summary>///导出Excel的按钮事件///</summary>///<param name="sender"></param>///<param name="e"></param>protectedvoidBtn_ToExcel_Click(objectsender, System.EventArgs e)
        {
//导出到ExcelSession["toExcelSQL"]=ctl_CommonPager.PagerSQL.TableQuery ;//Session["ViewCaseID"] = this.Lst_Case_List.SelectedValue;Response.Redirect("/_CommonPage/toExcel.aspx?id=-2&k=9&fid="+FunctionID);
        }
#endregion}
}

  那么这几行代码是如何呈现不同的数据列表呢?原因就在于这四个自定义控件和元数据。上一篇里提到了音乐盒与钢琴,那么这些代码就好比钢琴,元数据就好比乐谱。要演奏不同的乐曲,只需要换乐谱即可,不需要换钢琴。同理,显示不同的数据,只需要换元数据即可,不需要修改代码。

  而FunctionID就好比乐谱的名称(编号),这套代码(自定义控件)会根据这个FunctionID来获取对应的元数据,实现相应的功能。

  对了,说了半天,好像没说这个页面能够做什么。这个页面不仅可以显示数据列表,而且还可以实现查询、分页显示数据、呈现操作按钮(比如添加、修改、导出等)。而这些都可以依据角色来过滤,也就是权限到列表字段、权限到按钮、权限到查询字段。还有一个“个性化设置”的功能。这些在后面的演示中会体现出来。用不同的账号登录,会看到不同的效果。您用Guest账号登录,那么就只能看到“按条件查询”的按钮,看不到其他的按钮,因为没有权限。如果您用admin账号登录,那么您就可以看到不仅有“按条件查询”,还会有“添加角色”等按钮。

  关于权限方面的演示,将在下一篇里详细说明。

  再说一下DataList1.aspx的“位置”问题。DataList1.aspx虽然在Demo里面,但是并没有附加到Demo的项目里面,就是说如果您使用vs打开Demo,并不会看到DataList1.aspx。想看的话,可以使用“显示所有文件”的功能。而且Demo里面并没有DataList1.aspx.cs,而是引用了Nature.BaseUI.dll。

  DataList1.aspx的原始位置是在自然框架源码里面的 BaseUI 项目中。因为每一个项目里面用到的DataList1.aspx都是一样的,我不想在每个项目里都在写一遍代码,虽然只需要copy一下文件。但是对于以后的维护就会带来麻烦,因为不好统一。把文件(.cs)copy过去之后就没有办法限制不会被修改。每个项目都会有可能改一下,那不就乱了吗?

  所以呢,在BaseUI项目里面统一管理,其他的项目只能引用其.dll文件,拷贝 .aspx文件,并且不把.aspx引用到客户项目里。这样就可以最大程度限制不会被随意修改。

  如果DataList1.aspx不能满足一些特殊需求,那么可以在客户项目里建立一个新的列表页面来满足特殊需求。

同理,DataForm1.aspx(表单页面)等也是一样的,我就不多说了,感兴趣的兄弟们可以自己看看。

转载于:https://www.cnblogs.com/jyk/archive/2010/01/25/1656192.html

【自然框架】稳定版beta1——源码下载,Demo说明相关推荐

  1. 纯java版QQ源码下载

    纯java版QQ源码下载http://url.cn/7Mjy4P 郑重声明:(可先到华为网盘去看<java至尊QQ演示视频>) 因网盘不稳定,下载不了的话,请点击这里回贴留邮箱. 本人每天 ...

  2. 模仿Hibernate的逆向工程_java版_源码下载

    在这篇blog:"Hibernate逆向工程原理_java版本"中谈到了Hibernate逆向工程原理. 我喜欢理论和实践相结合....so,今天我试着模仿hibernate的逆向 ...

  3. 笑话与趣图框架微信小程序源码下载

    这是一款以笑话和趣味图为主的一款微信小程序源码 或者也可以说是一个框架吧 里面的内容是内置在小程序里面的,所以说是一款框架也可以 因为内置的内容,所以内容数量有限! 大家可以用来养账号,或者有能力的二 ...

  4. GameFramework篇:框架基本理解以及源码下载

    先偷偷观察一下E神的GitHub 只有三个项目,尽管如此,我还是感受到来自E神的压迫感. 我们再来看一下官网的描述 什么个意思呢? 我们先看UGF 可以看到有GameFramework的dll文件,那 ...

  5. 爱发php企业发卡网源码_PHP最新企业级自动发卡平台网站源码完整商业版_源码下载...

    源码介绍 PHP环境: php 5.X MySQL环境 :mysql 5.6 服务器需开启伪静态 支付接口相关设置: 微信接口: 登陆后台-> 通道管理->接入信息->设置微信公众支 ...

  6. 小程序源码下载[demo整理自github]

    微信小程序的火热程度大家都有所了解,也有很多牛人写了不错的小程序,今天ytkah就整理一些github上的小程序开源项目,源码可以直接下载来用,感兴趣的朋友赶紧去看看吧!以下小程序排名按star的数量 ...

  7. ssh mysql环境搭建 myeclipse_MyEclipse整合ssh三大框架环境搭载用户注册源码下载

    前言 SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层Web应用程序. 集成SSH框 ...

  8. asp写的百度ocr识别文字-通用文字识别(高精度版)源码下载

    今天接到一个客户需求,需要用ASP写一个百度OCR文字识别代码,他的程序都是用ASP写的,所以我们也需要用ASP给他实现百度OCR文字识别,我们在百度AI网站上启用了通用文字识别高精度版,利用高精度板 ...

  9. 两款简易计算器纯js版附源码下载

    效果如图: 还有一款更简易的 下载地址: csdn下载需要c币,没有c币可从微信公众号[无心有云] 发送[js版计算器],可获取百度云地址下载

最新文章

  1. 我的hadoop学习之路
  2. 县分计算机维修报废流程图,实验9 氨基甲酸铵分解反应标准平衡常数的测定.doc...
  3. Projects(子查询、连接,分组,聚合)
  4. java 异常信息_优雅的异常处理 -- Java中的异常
  5. windows8中的数据上下文和简单的ListView
  6. ClearTextBox.Text
  7. FFmpeg 4.2“艾达”发布
  8. 幼儿园带括号算式口诀_幼儿园数学作业括号题型.doc
  9. 计蒜客难题挑战:奇怪的国家
  10. 混淆矩阵(TP+FN+FP+TN)
  11. redistemplate给hash存储设置有效期_客户端较为常用的存储机制
  12. excel转置怎么操作_原来Excel的复制粘贴有这么多不为人知的用法
  13. LeetCode #1088. Confusing Number II
  14. html中的列表、表格、表单
  15. 5个省,7大 “5G+智能电网” 落地应用案例!
  16. css弹性盒子--弹性布局flex-grow、flex-shrink、flex-basis详解
  17. 等产量曲线中r_西方经济学(1)阶段性作业2
  18. 搞大事! EABM社区和众多大牌经纪商强强联手合作
  19. Linux系统性能监控与调优
  20. 如何添加操作系统启动项

热门文章

  1. 【深度学习】如何将Voting和Stacking等应用到神经网络模型
  2. python【力扣LeetCode算法题库】999-车的可用捕获量(DFS)
  3. 【深度学习笔记】Precision、Recall
  4. php margin参数,margin参数简单介绍_html/css_WEB-ITnose
  5. 密位测距离口诀_快速测距法(含简单几何说明)
  6. 黑马java教程是什么_Java教程:揭秘什么是面向接口编程
  7. 小米运动蓝牙耳机重新配对_运动高颜值蓝牙耳机推荐,开学选购蓝牙耳机必备攻略...
  8. python project_GitHub - DeqianBai/Python-Project: A series of python projects
  9. 计算机控制技术曹立学答案,高等学校电子与电气工程及自动化专业十二五规划教材:计算机控制技术...
  10. 长沙网络推广浅析影响网站快照更新时间的因素是什么?