天天看点

【自然框架】 页面里的父类—— 改进和想法、解释

1、 从Control到GridView继承了多少层?

【自然框架】 页面里的父类—— 改进和想法、解释

      看上面的类图,远远超过三层了吧。如果简单的用“书上说,继承不能超过三层”、“组合优于继承”来衡量的话,那么.Net框架能得到什么样的结论呢?

      所以我说,简单的依靠“书上说”来作评价是很死板的,是根本就没有考虑具体的情况、没有仔细的了解而随便说的。

      当然我并不是说.Net框架继承了这么多层,我就可以多继承几层了,我完全没有这个意思。用不用继承,继承的层数,这个要根据具体问题具体分析的,不能简单的依据书上的话、很随意的做出结论。也不能被书上的话给框框死,就是“尽信书不如无书”吧。

2、 我为什么要用继承。

      我们在做CRM这一类的管理程序的时候,需要做很多的列表页面,这些页面都共同的几件事情要做,判断是否登录、判断是否有权限访问、验证URL参数、给属性赋值等(这个是依据自然框架来说的,对于您来说也许没有这么多,但是总会有共同的事情吧,如果没有那就不需要用继承了)。很显然这些相同的事情不能让每个列表页面都亲自处理一遍,这个工作效率就太低了,冗余代码也很多。那么怎么办呢?我想到的就是继承。建立一个父类,把这些事情都交给父类去做,子类“坐享其成”就可以了。

3、 组合

      上面说了,要把这些共同的事情交给父类去做,那么是不是说就一定要父类亲自去做呢?很显然不是的。比如验证是否登录,这个我就是定义了UserManage、BaseUserInfo两个类来处理的。而在父类里面就是通过这两个类来实现判断是否登录的功能的,这个是不是传说中的“has A”呢?再弱弱的问一下,这个是不是组合呢?(这个我确实比较模糊,是“has A”比较有把握,但是算不算组合就真的不清楚了,望指教)。

如果要把共同的事情都做成类,然后组合的话,那么看看我们要做多少?

 判断是否登录

 判断是否有权限访问

 判断URL参数,每个页面的参数不尽相同,FunctionID是都会传递的,DataID是表单页面的,DepartmentID有时候会有。

 给属性赋值,不同类型的页面,赋值的方法是不一样的。

      这么多的“选项”,并不是每一个页面都需要,有的需要一个,有的需要几个,那么是不是要做出选择呢?如果我有100个列表页面,每一个页面都要选择一下吗?这100个列表页面的选择都是一样的呀,每个页面都做一次,是不是重复了呀。所以还是需要做一个父类,让父类去做选择,子类还是“坐享其成”就可以了。表单页面也是相同的情况。所以我觉得即使用了组合,那么继承的层数还是这些,不会有任何的影响。呵呵。

      所以我才定义了三个父类:列表页面的父类、表单页面的父类、删除页面的父类。如果继承只是这样的话(一层),那么我估计大家也就没有什么异议了吧。但是我又让这三个父类继承了一个父类——PageURL(判断URL的),估计这个是大家看不惯的地方吧,因为这个用OO的思路是完全解释不通的,他们有父子关系吗?没有。既然没有,那么为什么要用继承?为什么不把判断URL的地方做成单独的类,然后再去调用,就像判断是否登录的那样?

      我这么做的目的很简单,就是为了把相同的功能放到父类里面去,至于有没有父子关系,我不想过多的考虑,就像以前大家讨论“book.Save()”是否OO一样,管他O不O呢,好用就行,不用特意去迎合在现实里面的意义吧。既然都需要判断URL参数,那就放在父类里面好了。

      当然,判断URL参数的地方没有做成单独的类还有一个原因,那就是每一类的页面的判断的参数都不一样,还有一些特殊的页面判断的方式也不一样,我把判断的函数定义成virtual的,这样如果子类的判断方式不一样的话,那么就可以通过override来重写成自己的判断方式,这个不知道做成单独的类是否可以达到这样的功能。比如说表单页面的父类就override了验证DataID的函数。

4、 修改。

      看了大家的回复,也确实觉得有一个地方确实不适合,那就是判断是否有权限访问页面的功能,于是思考了一下,应该把这个功能从父类里面移出去,移出去后放在了BaseUserInfo类里面了。

5、修改后的类图

【自然框架】 页面里的父类—— 改进和想法、解释

      这是我的想法,欢迎大家拍板砖,呵呵。

1、PageURL

【自然框架】 页面里的父类—— 改进和想法、解释

namespace Nature.UI.Base

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

{

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

    /**//// <summary>

【自然框架】 页面里的父类—— 改进和想法、解释

    /// 处理URL参数

【自然框架】 页面里的父类—— 改进和想法、解释

    /// 接收URL传递过来的模块ID,大部分页面都需要使用这个ID

【自然框架】 页面里的父类—— 改进和想法、解释

    /// </summary>

【自然框架】 页面里的父类—— 改进和想法、解释

    public partial class PageURL : PagePermission

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        定义属性,记录URL参数值#region 定义属性,记录URL参数值

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /**//// <summary>

【自然框架】 页面里的父类—— 改进和想法、解释

        /// FunctionID,功能节点ID

【自然框架】 页面里的父类—— 改进和想法、解释

        /// </summary>

【自然框架】 页面里的父类—— 改进和想法、解释

        public string FunctionID = string.Empty;

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 接收URL传递过来的记录ID,用于显示、修改数据

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        public string DataID;

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        ///  按钮ID,用于是否可用按钮的验证

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        public string ButtonID;

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 部门ID。string.Empty 表示没有传递参数

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        public string DepartmentID = string.Empty;

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// foreign key column 外键ID。string.Empty 表示没有传递参数

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        public string ForeignID = string.Empty;

【自然框架】 页面里的父类—— 改进和想法、解释

        #endregion

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 页面里的标题

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        public Label Lbl_Title;             //页面里的标题

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        初始化 在Page_Load之间执行#region 初始化 在Page_Load之间执行

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 提取URL里面的参数,验证参数

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// <param name="e"></param>

【自然框架】 页面里的父类—— 改进和想法、解释

        protected override void OnInit(EventArgs e)

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            base.OnInit(e);

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            //调用函数来设置FunctionID,不同类型的页面就可以用不同的方式来设置FunctionID了。

【自然框架】 页面里的父类—— 改进和想法、解释

            SetFunctionID();

【自然框架】 页面里的父类—— 改进和想法、解释

            //调用函数来设置ButtonID。

【自然框架】 页面里的父类—— 改进和想法、解释

            SetButtonID();

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            //调用函数来设置DataID。

【自然框架】 页面里的父类—— 改进和想法、解释

            SetDataID();

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            //调用函数来设置DepartmentID(部门ID)。

【自然框架】 页面里的父类—— 改进和想法、解释

            SetDepartmentID();

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            //调用函数来设置ForeignID(外键ID)。

【自然框架】 页面里的父类—— 改进和想法、解释

            SetForeignID();

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            if (!Page.IsPostBack)

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                //设置标题

【自然框架】 页面里的父类—— 改进和想法、解释

                SetPageTitle();

【自然框架】 页面里的父类—— 改进和想法、解释

            }

【自然框架】 页面里的父类—— 改进和想法、解释

        }

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        清除IE缓存#region 清除IE缓存

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 清除IE缓存

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        protected override void OnLoad(EventArgs e)

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            base.OnLoad(e);

【自然框架】 页面里的父类—— 改进和想法、解释

            //清除IE缓存

【自然框架】 页面里的父类—— 改进和想法、解释

            Response.Cache.SetNoStore();

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

    }

【自然框架】 页面里的父类—— 改进和想法、解释

}

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

    /// 说明

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        设置标题#region 设置标题

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 设置标题

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        private void SetPageTitle()

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            if (this.Lbl_Title != null)

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                string sql = "select FunctionTitle from Manage_Function_Info where FunctionID=" + this.FunctionID;

【自然框架】 页面里的父类—— 改进和想法、解释

                this.Lbl_Title.Text = dal_Customer.ExecuteString(sql);

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        用抽象函数的方式设置FunctionID#region 用抽象函数的方式设置FunctionID

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 设置FunctionID。

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        protected virtual void SetFunctionID()

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            //DataList.aspx、DataForm.aspx 页面通过URL里的参数设置。

【自然框架】 页面里的父类—— 改进和想法、解释

            //其他页面自行设置

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            this.FunctionID = Request.QueryString["fid"];

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            验证模块ID参数是否是数字。#region 验证模块ID参数是否是数字。

【自然框架】 页面里的父类—— 改进和想法、解释

            if (!Functions.IsInt(this.FunctionID))

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                Response.Write("模块参数不正确!");

【自然框架】 页面里的父类—— 改进和想法、解释

                Response.End();

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            #endregion

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        用抽象函数的方式设置DataID#region 用抽象函数的方式设置DataID

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 设置DataID。

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        protected virtual void SetDataID()

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            this.DataID = Request.QueryString["id"];

【自然框架】 页面里的父类—— 改进和想法、解释

            if (!Functions.IsInt(DataID))

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                //没有传递,设置默认值

【自然框架】 页面里的父类—— 改进和想法、解释

                DataID = string.Empty;

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        用抽象函数的方式设置ButtonID#region 用抽象函数的方式设置ButtonID

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 设置ButtonID。

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        protected virtual void SetButtonID()

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            this.ButtonID = Request.QueryString["bid"];

【自然框架】 页面里的父类—— 改进和想法、解释

            if (!Functions.IsInt(ButtonID))

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                ButtonID = string.Empty;

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        验证外键#region 验证外键

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 验证外键

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        private void SetForeignID()

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            this.ForeignID = Request.QueryString["frid"];

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            验证外键ID参数是否是数字。#region 验证外键ID参数是否是数字。

【自然框架】 页面里的父类—— 改进和想法、解释

            if (!Functions.IsInt(ForeignID))

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                ForeignID = string.Empty;

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        验证部门ID#region 验证部门ID

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 验证部门ID

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        private void SetDepartmentID()

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            this.DepartmentID = Request.QueryString["did"];

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            验证部门ID参数是否是数字。#region 验证部门ID参数是否是数字。

【自然框架】 页面里的父类—— 改进和想法、解释

            if (!Functions.IsInt(DepartmentID))

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                DepartmentID = string.Empty;

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

2、BasePageList

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

    /// 列表页面的基类

【自然框架】 页面里的父类—— 改进和想法、解释

    /// 这个算不算模板模式呢?

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

    public partial class BasePageList : PageURL

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        定义共用的控件,以便于统一控制#region 定义共用的控件,以便于统一控制

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 分页用的控件

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        public QuickPager ctl_CommonPager;

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 显示数据用的控件

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        public MyGrid ctl_CommonGrid;

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 查询控件

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        public MyFind ctl_CommonFind;

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 查询按钮

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        public Button btn_Search;

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 按钮组,功能(操作)按钮

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        public OperationButtonBar ctl_CommonButtonBar;

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        在 OnInit 事件里面设置各个自定义控件的属性和关联#region 在 OnInit 事件里面设置各个自定义控件的属性和关联

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 在 OnInit 事件里面设置各个自定义控件的属性和关联

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            //父类里面验证参数是否正确

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            //验证是否有权限访问。

【自然框架】 页面里的父类—— 改进和想法、解释

            MyUser.CheckFunctionID(this.FunctionID);

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            //设置分页控件的属性和事件

【自然框架】 页面里的父类—— 改进和想法、解释

            SetQuickPagerInfo();

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            //设置数据表格的属性

【自然框架】 页面里的父类—— 改进和想法、解释

            SetGridInfo();

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            //设置查询控件的属性

【自然框架】 页面里的父类—— 改进和想法、解释

            SetFindControlInfo();

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            //设置操作按钮的属性

【自然框架】 页面里的父类—— 改进和想法、解释

            SetButtonBarInfo();

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

    /// 列表的基类。给共用控件设置属性和事件。

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        设置分页控件的属性#region 设置分页控件的属性

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 从元数据里提取信息,设置分页控件的属性

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        public virtual void SetQuickPagerInfo()

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            if (ctl_CommonPager != null)

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                ctl_CommonPager.DAL = dal_Customer;                     //设置客户的数据访问函数库

【自然框架】 页面里的父类—— 改进和想法、解释

                ctl_CommonPager.PagerSQL.Page = this;                   //设置Page,用于保存属性的状态

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                if (ctl_CommonGrid != null)

【自然框架】 页面里的父类—— 改进和想法、解释

                    ctl_CommonPager.ShowDataControl = ctl_CommonGrid;   //绑定数据显示控件

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                ctl_CommonPager.FunctionID = this.FunctionID;           //设置模块标志,即功能节点的ID

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                ctl_CommonPager.SetPagerInfo(dal_Metadata);             //从配置信息里面提取数据

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                //获取配置信息里面的“固定查询条件”

【自然框架】 页面里的父类—— 改进和想法、解释

                string tableQueryAlways = ctl_CommonPager.PagerSQL.TableQueryAlways;

【自然框架】 页面里的父类—— 改进和想法、解释

                string tmpQuery = "";

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                判断是否传入id,如果传入了再判断是否有外键。显示从表的列表的时候使用#region 判断是否传入id,如果传入了再判断是否有外键。显示从表的列表的时候使用

【自然框架】 页面里的父类—— 改进和想法、解释

                if (this.DataID != null)

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                    string ForeignColumn = this.dal_Metadata.ExecuteString("select top 1 ForeignColumn  from Manage_Function_Info where FunctionID=" + this.FunctionID);

【自然框架】 页面里的父类—— 改进和想法、解释

                    if (ForeignColumn != null && ForeignColumn.Length > 0)

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                        //设置固定查询条件

【自然框架】 页面里的父类—— 改进和想法、解释

                        tmpQuery = ForeignColumn + "=" + this.DataID;

【自然框架】 页面里的父类—— 改进和想法、解释

                        if (tableQueryAlways.Length == 0)

【自然框架】 页面里的父类—— 改进和想法、解释

                            tableQueryAlways = tmpQuery;

【自然框架】 页面里的父类—— 改进和想法、解释

                        else

【自然框架】 页面里的父类—— 改进和想法、解释

                            tableQueryAlways += " and " + tmpQuery;

【自然框架】 页面里的父类—— 改进和想法、解释

                    }

【自然框架】 页面里的父类—— 改进和想法、解释

                }

【自然框架】 页面里的父类—— 改进和想法、解释

                #endregion

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                判断用户角色是否有列表的过滤方案#region 判断用户角色是否有列表的过滤方案

【自然框架】 页面里的父类—— 改进和想法、解释

                tmpQuery = MyUser.GetResourceListCastSQL(this.FunctionID);

【自然框架】 页面里的父类—— 改进和想法、解释

                if (tmpQuery.Length > 0)

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                    //有过滤方案,即查询语句。添加到分页控件的固定查询条件里。

【自然框架】 页面里的父类—— 改进和想法、解释

                    if (tableQueryAlways.Length == 0)

【自然框架】 页面里的父类—— 改进和想法、解释

                        tableQueryAlways = tmpQuery;

【自然框架】 页面里的父类—— 改进和想法、解释

                    else

【自然框架】 页面里的父类—— 改进和想法、解释

                        tableQueryAlways += " and " + tmpQuery;

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                //设置分页控件的固定查询条件。

【自然框架】 页面里的父类—— 改进和想法、解释

                ctl_CommonPager.PagerSQL.TableQueryAlways = tableQueryAlways;

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        设置显示数据控件的属性#region 设置显示数据控件的属性

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 设置显示数据控件的属性

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        public virtual void SetGridInfo()

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            if (ctl_CommonGrid != null)

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                SetGridInfo(ctl_CommonGrid);

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 设置数据显示控件实例的属性

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// <param name="grid">数据显示控件MyGrid</param>

【自然框架】 页面里的父类—— 改进和想法、解释

        public void SetGridInfo(MyGrid grid)

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            UDRMGrid myUDRM = new UDRMGrid();

【自然框架】 页面里的父类—— 改进和想法、解释

            grid.UDRM = myUDRM;

【自然框架】 页面里的父类—— 改进和想法、解释

            myUDRM.DALCustomer = base.dal_Customer;   //设置客户数据的数据访问函数库

【自然框架】 页面里的父类—— 改进和想法、解释

            myUDRM.DALMetadata = base.dal_Metadata;   //设置元数据的数据访问函数库

【自然框架】 页面里的父类—— 改进和想法、解释

            myUDRM.FunctionID = this.FunctionID;      //设置模块标志,即功能节点的ID

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            //设置当前用户可以访问的字段——即权限到列表字段

【自然框架】 页面里的父类—— 改进和想法、解释

            myUDRM.RoleColumnID = MyUser.GetUserColumnIDs(this.FunctionID, "1");

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        设置查询控件的属性#region 设置查询控件的属性

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 设置查询控件的属性

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        public virtual void SetFindControlInfo()

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            if (ctl_CommonFind != null)

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                SetFindControlInfo(ctl_CommonFind);

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            if (btn_Search != null)

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                this.btn_Search.Click += new EventHandler(Btn_Search_Click);

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// <param name="find">查询控件的实例</param>

【自然框架】 页面里的父类—— 改进和想法、解释

        public void SetFindControlInfo(MyFind find)

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            UDRMFind myUDRM = new UDRMFind();

【自然框架】 页面里的父类—— 改进和想法、解释

            find.UDRM = myUDRM;

【自然框架】 页面里的父类—— 改进和想法、解释

            find.User = MyUser;

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            myUDRM.DALMetadata = base.dal_Customer;                  //设置数据访问函数库

【自然框架】 页面里的父类—— 改进和想法、解释

            myUDRM.DALCustomer = base.dal_Metadata;                  //设置数据访问函数库

【自然框架】 页面里的父类—— 改进和想法、解释

            myUDRM.FunctionID = this.FunctionID;    //设置模块标志,即功能节点的ID

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            find.SetTDColumns = 4;                //设置列数

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            myUDRM.RoleColumnID = MyUser.GetUserColumnIDs(this.FunctionID, "3");

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        查询按钮触发的事件#region 查询按钮触发的事件

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 查询按钮触发的事件

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// <param name="sender"></param>

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        public virtual void Btn_Search_Click(object sender, EventArgs e)

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            ctl_CommonPager.PagerSQL.TableQuery = this.ctl_CommonFind.GetSearchWhere();

【自然框架】 页面里的父类—— 改进和想法、解释

            ctl_CommonPager.PagerSQL.CreateSQL();

【自然框架】 页面里的父类—— 改进和想法、解释

            ctl_CommonPager.BindFirstPage();

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            //Response.Write(this.ctl_CommonFind.GetSearchWhere ());

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        设置按钮组#region 设置按钮组

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 设置按钮组

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        public virtual void SetButtonBarInfo()

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            if (ctl_CommonButtonBar != null)

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                ctl_CommonButtonBar.FunctionID = this.FunctionID;

【自然框架】 页面里的父类—— 改进和想法、解释

                ctl_CommonButtonBar.DAL = this.dal_Customer;

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                if (MyUser.PersonID == "1")

【自然框架】 页面里的父类—— 改进和想法、解释

                    //超级管理员不过滤按钮

【自然框架】 页面里的父类—— 改进和想法、解释

                    ctl_CommonButtonBar.SetRoleButtonID = "";

【自然框架】 页面里的父类—— 改进和想法、解释

                else

【自然框架】 页面里的父类—— 改进和想法、解释

                    //其他用户验证按钮

【自然框架】 页面里的父类—— 改进和想法、解释

                    ctl_CommonButtonBar.SetRoleButtonID = MyUser.GetUserButtonID(this.FunctionID);

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        //验证

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        验证DataID#region 验证DataID

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 验证DataID。

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        protected override void SetDataID()

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            base.SetDataID();

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            string dataID = this.DataID;

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            if (dataID == string.Empty)

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            else

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                //传递了参数,需要验证

【自然框架】 页面里的父类—— 改进和想法、解释

                if (!Functions.IsInt(dataID))

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                    Response.Write("DataID参数不正确!");

【自然框架】 页面里的父类—— 改进和想法、解释

                    Response.End();

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        验证列表页面与FunctionID是否匹配#region 验证列表页面与FunctionID是否匹配

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 验证列表页面与FunctionID是否匹配

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        protected override void SetFunctionID()

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            //基类里验证FunctionID是否是数字

【自然框架】 页面里的父类—— 改进和想法、解释

            base.SetFunctionID();

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            验证列表页面与FunctionID是否匹配#region 验证列表页面与FunctionID是否匹配

【自然框架】 页面里的父类—— 改进和想法、解释

            string webPath = Request.Url.LocalPath;

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            switch (webPath)

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                case "/_CommonPage/DataList1.aspx":     //通用列表页面

【自然框架】 页面里的父类—— 改进和想法、解释

                case "/_CommonPage/DataTab.aspx":       //通用标签页面

【自然框架】 页面里的父类—— 改进和想法、解释

                    //不需要做匹配验证

【自然框架】 页面里的父类—— 改进和想法、解释

                    break;

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                default:

【自然框架】 页面里的父类—— 改进和想法、解释

                    //需要验证

【自然框架】 页面里的父类—— 改进和想法、解释

                    string sql = "select top 1 1 from Manage_Function where FunctionID = " + this.FunctionID + "and WebURL like '" + webPath + "%'";

【自然框架】 页面里的父类—— 改进和想法、解释

                    if (this.dal_Customer.ExecuteExists(sql))

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                        //有记录,通过验证

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

                        //没有记录,不能继续

【自然框架】 页面里的父类—— 改进和想法、解释

                        Response.Write("FunctionID和页面不匹配!");

【自然框架】 页面里的父类—— 改进和想法、解释

                        Response.End();

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

3、具体的列表页面

【自然框架】 页面里的父类—— 改进和想法、解释

namespace Nature.UI.Common

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

    /// 数据列表

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

    public partial class DataList1 : Base.BasePageList  

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 是否显示查询条件

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        protected string isShowSearch = "";        //是否显示查询

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        protected void Page_Load(object sender, EventArgs e)

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            base.ForeignID = this.DataID;

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        刷新当前页面#region 刷新当前页面

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 刷新当前页面

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        protected void Btn_Reload_Click(object sender, System.EventArgs e)

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            this.ctl_CommonPager.BindThisPage();

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 显示第一页

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        protected void Btn_ReloadFirst_Click(object sender, System.EventArgs e)

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            //this.ctl_CommonPager.CreateQuery();

【自然框架】 页面里的父类—— 改进和想法、解释

            this.ctl_CommonPager.BindFirstPage();

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        查询#region 查询

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 查询事件

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        public override void Btn_Search_Click(object sender, EventArgs e)

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            base.Btn_Search_Click(sender, e);

【自然框架】 页面里的父类—— 改进和想法、解释

            isShowSearch = "isShowSearch = 0;";

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        导出到Excel#region 导出到Excel

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        /// 导出Excel的按钮事件

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

        protected void Btn_ToExcel_Click(object sender, System.EventArgs e)

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            //导出到Excel

【自然框架】 页面里的父类—— 改进和想法、解释

            Session["toExcelSQL"] = ctl_CommonPager.PagerSQL.TableQuery ;

【自然框架】 页面里的父类—— 改进和想法、解释

            //Session["ViewCaseID"] = this.Lst_Case_List.SelectedValue;

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

            Response.Redirect("/_CommonPage/toExcel.aspx?id=-2&k=9&fid=" + FunctionID);

【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释
【自然框架】 页面里的父类—— 改进和想法、解释

<head runat="server">

    <title><%=Lbl_Title.Text%></title>

    <%=CssWeb%> 

    <script language="javascript" type="text/javascript" src="/public/js/TableTR.js" ></script>

    <script language="javascript" type="text/javascript" src="/public/js/My97DatePicker/WdatePicker.js" ></script>

</head>

<body>

    <form id="form1" runat="server">

    <div style="width:100%; font-size:14pt; text-align: center;vertical-align:middle;">

        <br /><asp:Label ID="Lbl_Title" runat="server" style="font-size:14pt; "></asp:Label>

    </div>

    <Nature:OperationButtonBar ID="ctl_CommonButtonBar" runat="server" />

    <div id="div_Search" style="display:none;" align="center"><br />

    <fieldset title="查询条件" style="PADDING-BOTTOM:6px;BORDER-RIGHT: #666 1px solid; BORDER-TOP: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BORDER-BOTTOM: #666 1px solid;"><legend style="font-size:9pt;">查询条件</legend>

        <table  width="100%" align="center" border="0" bgcolor="#ffffff">

            <tr>

                <td><Nature:MyFind id="ctl_CommonFind" runat="server"/></td>

                <td width="50">

                    <asp:Button ID="Btn_Search" runat="server" Text=" 查 询 " />

                </td>

            </tr>

        </table>

    </fieldset>

    <div>

        <Nature:MyGrid ID="ctl_CommonGrid" runat="server" />

        <Nature:QuickPager ID="ctl_CommonPager" runat="server" PageUIGO="GO" />

    <span id="dd"></span>

    <span style="DISPLAY:none">

         <asp:button id="Btn_ToExcel" runat="server" Text="导出到Excel" onclick="Btn_ToExcel_Click"></asp:button>

        <asp:button id="Btn_ToAccess" runat="server" Text="导出到Access"></asp:button>

        <asp:button id="Btn_Reload" runat="server" Text="刷新本页" onclick="Btn_Reload_Click"></asp:button>

        <asp:button id="Btn_ReloadFirst" runat="server" Text="刷新到第一页" onclick="Btn_ReloadFirst_Click"></asp:button>

        <Nature:MyTextBox id="Txt_isShowSearch" runat="server"/>

        <iframe id="ifrmDel" name="ifrmDel" width="100" height="100"></iframe>

    </span>

    </form>

</body>

==========================

= 希望我的想法,能够给您带来一点帮助! =

= 大家一起研究、讨论,共同提高、发财! =

继续阅读