【思路】表单控件和查询控件,整理一下思路。

 

     这回不分页了,改成添加修改数据了。您是如何添加数据的呢?使用ORM、LinQ、.net2.0新增加的FormView + SqlDataSource,还是其他?我还是喜欢自己动手丰衣足食。自己做一个表单控件来玩玩。

 

     以前也写了几个关于表单控件的 post :

1、表单控件续(1)——应用接口来简化和分散代码

2、能自己“跑”的表单控件,思路,雏形,源码。vs2005版本

 

 

     我简单的看了一下FormView + SqlDataSource的方式,ms还真是厉害,拖拽几个控件,点击下鼠标,基本功能就出来了。挺简单的吧,但是还是有几个缺点:

 

     1、虽然能够根据字段来生成控件,但是好像只有文本框,下拉列表不能自动生成出来吧。

     2、我的字段名是“Title”,那么他就把Title当成标签了,其实我是想用“新闻标题”来显示给用户看的。

     3、aspx页面里一大堆的字段名和SQL语句,当然这些都是FormView 和 SqlDataSource的属性的内容。这么分散不便于管理吧,有个风吹草动的话怎么办呢?我还没有深入了解,不知道FormView 和 SqlDataSource有没有好的应对方法。

 

     分析一下FormView 和 SqlDataSource都做了哪些事情,FormView主要是绘制各种控件,保存数据,提取数据这些工作好像都交给SqlDataSource了。(顺便问一下,谁使用了这种方式来写项目?我还是头一回尝试,不知道用得对不对。)

 

     我的表单控件和这个差不多,主要是针对这几个缺点来完善的,请看下图。

 

   

 

     先继承.net Framework里的 DataBoundControl   定义一个 myDataBoundControl,加上两个属性,以便于表单控件、查询控件和分页控件公用。

     然后在继承myDataBoundControl 定义一个 BaseForm,作为 表单控件、查询控件 的基类,用于实现公用的代码。

     

      BaseForm 的任务:

 

     1、根据“配置信息”来绘制UI,比如文本框、下拉列表框、复选框组等控件,并且可以填充item,比如下拉列表框的选项,只绘制出来一个空的下拉列表框也没有什么大用处呀,所以要能够填充“选项”才好。

     2、提取用户输入的数据,填充到一个集合里面,以备表单控件和查询控件使用。

     

     myForm ,继承BaseForm,实现添加、修改、显示数据的功能。

     myForm 的任务:

 

     1、得到存储过程的名称,或者拼接参数化的SQL语句,再加上BaseForm 里添加的参数,一起提交给“数据访问函数库”,最终交给数据库执行添加(修改)的操作。

     2、在修改和显示的装状态下要可以提取要修改的数据(提取部分交给数据访问函数库处理),自动“绑定”到各个控件。

 

     查询控件就是把用户输入的数据,根据查询方式组合成SQL语句(where后面的),然后交给分页控件就可以了。

 

     表单控件可以使用参数化sql,也可以使用存储过程。最大的优点就是可以不必在写拼接参数化的sql语句,也不用写给Parameter赋值的语句了。

     另一个优点就是,当字段名有变化的时候,只需要修改“配置信息”,不用修改代码了。因为需要的SQL语句都是在运行的时候根据配置信息动态生成的,所以只需要改配置信息就可以了,省去了改代码的烦恼。

 

     配置信息,上面提到了几回配置信息,还没有详细说明。这里的“配置信息”不是web.config文件,而是一种字段和UI(文本控件、下拉列表框等)的对应关系,就是说要描述一下一个字段在表单、查询、列表显示里面的形式,比如说Title(新闻标题),在表单里面会“变成”一个文本框,查询的时候还是一个文本框,但是要增加查询条件,要用模糊查询(like '%key%')的方式。还有一些细节,比如文本框的宽度,最大字符数,单行的还是多行的,是否需要验证、验证的方式等信息。对于下拉列表框就是如何填充选项,这些都要描述出来。

 

     这些信息是放在数据库里的,不是放在一个表,而是多各表,目的就是可以复用字段名称,做到数据库里的字段名称有变化,配置信息里面只需要改一处就可以了。

 

     表单控件的整体的思路和代码生成器有点相似,不同的是,代码生成器需要事先生成好代码,然后编译、运行;而表单控件的思路是,写好一个控件,编译,运行的时候根据描述信息来动态(自动)绘制UI,生成需要的参数化的SQL语句,自动填充存储过程的参数等。优点就是,易于应对变化。

 

     基本功能都已经出来了,剩下的是整理一下思路,有些地方还要考虑安全因素,要在效率和安全之间找一个平衡点。最后还要写一个“管理程序”来管理这些“描述信息”。

 

     现在代码还比较乱,可能会有比较大的改动,所以就先不提供下载了,整理一下,在提供下载。

 

     

时间: 2024-09-29 06:08:50

【思路】表单控件和查询控件,整理一下思路。的相关文章

验证控件 表单验证-webform的验证控件的无法启动客户端脚本验证?

问题描述 webform的验证控件的无法启动客户端脚本验证? webform的验证控件的EnableClientScript设为true为什么还是无法启动客户端脚本验证?<%@ Page Language=""C#"" AutoEventWireup=""true"" CodeBehind=""Login.aspx.cs"" Inherits=""App003_

有关struts2中的表单标签回显查询到对象的某个属性值

问题描述 有关struts2中的表单标签回显查询到对象的某个属性值 action中的方法: public String userEdit() { elecUser=elecUserService.findById(elecUser.getUserId()); // ActionContext.getContext().getValueStack().pop(); ActionContext.getContext().getValueStack().push(elecUser); return "

validator-Validator验证表单,jqueryUI spinner控件值无法验证通过的

问题描述 Validator验证表单,jqueryUI spinner控件值无法验证通过的 在表单中试用了jqueryUI中的spinner ,表单使用jquery插件 formvalidate验证.当提交表单时会验证,在验证失败的控件上显示红叉.而当再次输入正确的值时该红叉会变为对号.在spinner中写值,直接提交空表.spinner控件上报红叉,该空间验证了不为空.可当通过spinner上的按钮给spinner赋值,spinner的验证还是失败.必须手写输入才行. 验证失败后点击spinn

asp.net夜话之三:表单和控件

在今天我主要要介绍的有如下知识点: HTML表单的提交方式 HTM控件 获取HTML表单内容 乱码问题 SQL注入 服务器端表单 HTML服务器控件 HTML表单的提交方式 对于一个普通HTML表单来说,它有两个重要的属性:action和method. action属性指明当前表单提交之后由哪个程序来处理,这个处理程序可以是任何动态网页或者servlet或者CGI(Common Gateway Interface),在asp.net里面一般都是都aspx页面来处理. method属性指明form

ASP.NET MVC 2生成动态表单的一种最简单的思路

在BPM.OA等系统中,都会存在一个表单设计器.有些是通过操作gridview来完成一个表单的设计:有些是通过类似VS拖拽的方法完成一个表单的设计.很明显后面一种优越于前面一种.无论是哪种,最后都会产生一些XML之类的表单结构的数据. 这篇文章将讲述,在表单设计器设计好表单之后,在ASP.NET MVC中如何将表单结构的xml转换成实际应用系统中的表单.看下面一个xml文件,我们假设它是由一个表单设计器设计出来的. <?xml version="1.0" encoding=&qu

一起谈.NET技术,ASP.NET MVC 2生成动态表单的一种最简单的思路

在BPM.OA等系统中,都会存在一个表单设计器.有些是通过操作gridview来完成一个表单的设计:有些是通过类似VS拖拽的方法完成一个表单的设计.很明显后面一种优越于前面一种.无论是哪种,最后都会产生一些XML之类的表单结构的数据. 这篇文章将讲述,在表单设计器设计好表单之后,在ASP.NET MVC中如何将表单结构的xml转换成实际应用系统中的表单.看下面一个xml文件,我们假设它是由一个表单设计器设计出来的. <?xml version="1.0" encoding=&qu

查询管理网站表单excel轻松实现

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 某些网站以页面程度读取表单的原理呈现网站内容,该功能能给网站用户以直观的效果,然而表单内容的实时管理却是站长们感觉烦恼的一块内容,对于站长们而言,不可能每次需要全面了解查询表单的时候,就登陆服务器将相应的文件下载到本地再转换为统计工具可读取文件.今天我就以图文详细解说的方式和大家分享用excel轻松实现查询管理网站表单的具体过程. 1.建立本

jQuery提交表单ajax查询实现代码(1/2)

ajax() 方法通过 HTTP 请求加载远程数据. 该方法是 jQuery 底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等.$.ajax() 返回其创建的 XMLHttpRequest 对象.大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性. 最简单的情况下,$.ajax() 可以不带任何参数直接使用. 一:Url参数提交数据  代码如下 复制代码 <script type ="text/javascript" src

jQuery提交表单ajax查询实例代码_jquery

看一个用jQuery提交表单ajax查询的例子. 基本功能:用户输入一个表单,输入准考证和验证码,验证用户是否输入表单,点击查询提交,然后从服务器得到返回的数据并显示出来. 代码如下: jQuery部分: 复制代码 代码如下: <script language="javascript" type="text/javascript"> $(document).ready(function() { $("#btnSubmit").clic