【小试身手】几个自定义控件的组合应用,实现简单的“增删改查”功能(有源码)

简介:      分页控件、查询控件、显示数据的控件和表单控件,终于把这几个控件结合在一起了,和在一起之后就可以让“增删改查”变的非常的简单和容易了,当然还需要数据访问函数库的支持。      综合演示的IDE是 vs2008,.net Framework2.0,C#, B/S 。

 

     分页控件、查询控件、显示数据的控件和表单控件,终于把这几个控件结合在一起了,和在一起之后就可以让“增删改查”变的非常的简单和容易了,当然还需要数据访问函数库的支持。

     综合演示的IDE是 vs2008,.net Framework2.0,C#, B/S 。目标(适用范围)是网站的后台管理、OA、CRM、CMS等信息管理方面的项目。

     演示网址:http://jyk.mainsdn.com/ 感谢 CleverKing (www.mainsdn.com)提供空间和域名。

     自定义控件的源码下载地址:http://www.cnblogs.com/jyk/archive/2008/07/29/1255891.html

     综合演示的程序(源码)的下载地址:http://www.cnblogs.com/jyk/archive/2008/07/29/1255891.html

     先发个截图:

 

 

 表单页面,实现增加、修改数据。

     

 

     表面上看好像没什么特别的,但是有两点需要注意一下。

     1、像文本框、下拉列表框这样的控件,并不是在IDE里面拖拽出来的,而是表单控件、查询控件根据配置信息自动“绘制”出来的。

     2、如果您留意一下网址的话,您会发现“新闻管理”和“员工管理”的列表页面的网址都是http://jyk.mainsdn.com/_CommonPage/DataList1.aspx?fid=21 只是后面的 fid值不一样,一个是21,一个是23。

     同样两个表单页面的网址也是一样的,都是http://jyk.mainsdn.com/_CommonPage/DataDetail.aspx?k=1&fid=21&id=-2 同样也只是 fid 不一样,一个是21,一个是23。

     这两个页面不是只能承担两个功能点,其他的功能点也都可以使用这两个页面,只要功能不是太复杂的就可以。一般的项目,80%的列表页面都可以使用DataList.aspx页面来实现,而30%-80%的表单也都可以使用DataDetail.aspx页面实现。

     可能您会想,这么多的功能点都是用同一个页面实现,页面里的代码是不是会很多很复杂,其实页面里的代码很简单,其原因就是采用了一系列的自定义控件来实现的。

     下面是基类、网页的结构图:

 

 

     

     VS2008提供了一个计算代码度量值的功能,用一下看看吧,总共的代码数才128行,挺简洁的吧。

     

 

     页面里的代码

     贴一段BasePageList 的代码,其他的就先不贴了,感兴趣的话可以下载源代码。

 

  public   class  BasePageList : BasePage
img_405b18b4b6584ae338e0f6ecaf736533.gifimg_1c53668bcee393edac0d7b3b3daff1ae.gif    
{
img_7a2b9a960ee9a98bfd25d306d55009f8.gifimg_2887d91d0594ef8793c1db92b8a1d545.gif        
定义公用的控件,以便于统一控制#region 定义公用的控件,以便于统一控制
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        
/**//// <summary>
        
/// 分页用的控件
        
/// </summary>

        public QuickPager myPager;

img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        
/**//// <summary>
        
/// 显示数据用的控件
        
/// </summary>

        public MyGrid myGrid;

img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        
/**//// <summary>
        
/// 查询控件
        
/// </summary>

        public MyFind myFind;

img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        
/**//// <summary>
        
/// 查询按钮
        
/// </summary>

        public Button Btn_Search;

        
#endregion


img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        
/**//// <summary>
        
/// OnInit事件
        
/// </summary>
        
/// <param name="e"></param>

        protected override void OnInit(EventArgs e)
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        
{
            
base.OnInit(e);

img_7a2b9a960ee9a98bfd25d306d55009f8.gifimg_2887d91d0594ef8793c1db92b8a1d545.gif            
设置分页控件的属性#region 设置分页控件的属性
            myPager.DAL 
= base.dal;
            
            myPager.ControlGrid 
= myGrid;
            myPager.FunctionID 
= this.FunctionID;

            myPager.SetPagerInfo();
            
            
#endregion


img_7a2b9a960ee9a98bfd25d306d55009f8.gifimg_2887d91d0594ef8793c1db92b8a1d545.gif            
设置显示数据控件的属性#region 设置显示数据控件的属性
            myGrid.DAL 
= base.dal;
            myGrid.FunctionID 
= this.FunctionID;
            
#endregion


img_7a2b9a960ee9a98bfd25d306d55009f8.gifimg_2887d91d0594ef8793c1db92b8a1d545.gif            
设置查询控件的属性#region 设置查询控件的属性
            myFind.DAL 
= base.dal;
            myFind.FunctionID 
= this.FunctionID;

            myFind.SetTDColumns 
= 3;

            
#endregion


img_7a2b9a960ee9a98bfd25d306d55009f8.gifimg_2887d91d0594ef8793c1db92b8a1d545.gif            
添加按钮的事件#region 添加按钮的事件
            
this.Btn_Search.Click += new EventHandler(Btn_Search_Click);
            
#endregion

        }


img_7a2b9a960ee9a98bfd25d306d55009f8.gifimg_2887d91d0594ef8793c1db92b8a1d545.gif        
查询事件#region 查询事件
        
void Btn_Search_Click(object sender, EventArgs e)
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        
{
            myPager.TableQuery 
= this.myFind.GetSearchWhere(); 
            myPager.BindFirstPage();
        }

        
#endregion

    }

 

 

 

 

     综合演示的“安装”说明,需要下载演示用的数据库,在http://www.cnblogs.com/jyk/archive/2008/07/29/1255891.html 这里有下载,附加到SQL Server 2000(5)里面,然后下载综合演示的程序,然后打开web.congfig文件,修改连接字符串。

 

 

 

相关文章
|
3天前
|
缓存 关系型数据库 Java
不要将数据库中的“分库分表”理论盲目应用到 Elasticsearch
不要将数据库中的“分库分表”理论盲目应用到 Elasticsearch
12 0
|
2天前
|
存储 NoSQL 搜索推荐
探索新一代数据库技术:基于图数据库的应用与优势
传统关系型数据库在处理复杂的关系数据时存在着诸多限制,而基于图数据库的新一代数据库技术则提供了更为灵活和高效的解决方案。本文将深入探讨图数据库的核心概念、应用场景以及与传统数据库相比的优势,带领读者一窥未来数据库技术的发展趋势。
|
9天前
|
存储 运维 Kubernetes
多态关联在数据库设计中的应用和解决方案
多态关联在数据库设计中的应用和解决方案
16 0
|
10天前
|
PHP 数据库
DIY私人图床:使用CFimagehost源码自建无需数据库支持的PHP图片托管服务-2
DIY私人图床:使用CFimagehost源码自建无需数据库支持的PHP图片托管服务
|
10天前
|
存储 PHP Apache
DIY私人图床:使用CFimagehost源码自建无需数据库支持的PHP图片托管服务-1
DIY私人图床:使用CFimagehost源码自建无需数据库支持的PHP图片托管服务
|
10天前
|
存储 算法 数据库
矢量数据库在图像识别与检索中的应用实践
【4月更文挑战第30天】本文探讨了矢量数据库在图像识别与检索中的应用,通过特征提取(如SIFT、SURF)、编码和相似度度量实现快速识别。在图像检索流程中,经过预处理、特征提取和编码后,矢量数据库用于查询相似特征,排序后展示给用户。实际案例显示,矢量数据库能提升电商平台的商品图像搜索效率和用户体验。随着技术发展,这一领域应用前景广阔。
|
10天前
|
机器学习/深度学习 搜索推荐 数据库
矢量数据库的未来发展趋势:新技术与应用展望
【4月更文挑战第30天】随着AI和机器学习的发展,矢量数据库在处理非结构化数据方面的重要性日益增强。预测到2028年,全球矢量数据库市场将从2023年的15亿美元增长至43亿美元。未来趋势包括:并行计算与分布式架构提升处理能力,硬件加速技术(如TPU和昇腾芯片)提高性能,自适应索引机制优化查询效率。应用领域将拓展至NLP、图像视频分析和推荐系统,为各行业带来更多创新和价值。
|
10天前
|
机器学习/深度学习 存储 人工智能
矢量数据库在机器学习领域的应用与前景
【4月更文挑战第30天】本文探讨了矢量数据库在机器学习领域的应用,包括特征存储、相似性搜索、模型训练与调优及实时分析。随着AI技术发展,矢量数据库将深度融合,提升扩展性和可伸缩性,增强智能化功能,并加强安全性与隐私保护。未来,矢量数据库将在机器学习领域扮演关键角色。
|
10天前
|
存储 数据可视化 关系型数据库
矢量数据库在地理空间数据处理中的应用
【4月更文挑战第30天】矢量数据库在地理空间数据处理中展现优势,高效存储管理高维向量数据,支持快速查询、空间分析与可视化。分布式处理能力适应大数据量需求,提供高效、灵活、可扩展及可视化支持,是处理地理空间数据的理想选择。随着技术进步,其应用将更加广泛。
|
11天前
|
API 数据库 Python
Python web框架fastapi数据库操作ORM(二)增删改查逻辑实现方法
Python web框架fastapi数据库操作ORM(二)增删改查逻辑实现方法