Step By Step 一步一步写网站[1] —— 帧间压缩,表单控件

记得在大学的时候,学习多媒体遇到了一个概念:帧内压缩和帧间压缩。我感觉我的第一篇里里面提到的我的那个方法有一点像帧间压缩,那么是不是把代码减少到极致了呢?

单看一个表的添加代码好像是,但是一个项目可不是只有一个添加的页面就完事了,项目越大,添加的页面也就越多,每个页面都写这么多的代码,依然很烦。那么怎么办呢?

许多人想到了代码生成器。是的,代码生成器可以减少我们的劳动,但是不能减少代码!

相反,由于使用了代码生成器,限制了我们的想象力,让我们居于现状,认为这么多的代码是正常的,是不可避免的,反正有代码生成器,我们也不累,就不去想更好的解决方法了。

那么添加的页面多了怎么来减少代码呢——帧间压缩,对就是他!

写代码生成器的人都知道在MS SQL里面这几个表的作用,生成代码大多也都使用了这几个表,但是只限于生成代码,而没有去想其他的用处,是不是有一点可惜呢?

对了先说一下这几个表,sysobjects,syscolumns。
sysobjects 简单的说就是存放表名的地方,当然除了表还放了其他的信息。

1SELECT name, id, xtype
2FROM dbo.sysobjects
3WHERE (xtype = 'u')

在查询分析器里运行一下这个SQL语句,你看到了什么?是不是很面熟。

syscolumns 简单的说就是放字段的地方,当然......同上。

1SELECT tbl.name AS TableName, col.name AS ColName, t.name, col.length
2FROM dbo.syscolumns col INNER JOIN
3      dbo.sysobjects tbl ON col.id = tbl.id INNER JOIN
4      dbo.systypes t ON col.xtype = t.xtype
5WHERE (tbl.xtype = N'u')

再在查询分析器里运行一下这个SQL语句,你看到了什么?表名、字段名、字段类型、字段大小。

我们可以把这个SQL语句做成一个视图(V_Col),下面的代码会用到。

有了这个数据源我们可以做什么呢?好多人都用它来做代码生成器了,而我要用他做一个简单的表单控件!

在.aspx里面放一个DataGrid ,ID改为DG,在后台得到这个数据源,并且绑定到DG。
对了,要加一个查询条件:TableName = 'yourTableName'。

DG的第一列绑定ColName 字段,第二列加一个模版列,里面放一个TextBox。

运行程序,你看到了什么?一个表单!一个表的全部字段的表单!还记得那个查询语句吧,TableName = 'yourTableName'。写哪个表就是哪个表的表单。

到这里显示的功能就完成了,下面是保存数据!

写一段代码来保存任意一个表的数据!

记得我第一篇里写的我的那段添加数据的代码吗?什么根本就没看过?不要紧建议先看一看

添加数据需要两个数组和一个表名,第一个数组放字段名,第二个数组放用户输入的数据,然后再来一个表名就可以了。

现在我们拥有这些信息,字段名在DG的第一列里面,用户输入的数据在DG的第二列里的TextBox里面,在点击保存的事件里面遍历DG,获取这些信息就可以了。

最后得到表名,调用我的数据访问层的 dal.InsertDataStr("T_News",str1,str); 就OK了。

添加另一个表的数据,只要换一个表名就可以了!

PS:

是不是有人会说,你别在这里骗人了,表单控件哪有这么简单呀!

这里有很多的不足:
1、大多数的字段都使用英文的,直接把英文的字段显示给用户,那当然是不行的。
2、如果主键是自增的,那么保存的时候就会出错,因为这个字段是不能赋值的。
3、字段不是都用TextBox搞定的,还需要下拉列表框、复选框、单选框、FreeTextbox等各种各样的控件,只有一个TextBox哪行呀?!
4、我要加验证怎么办?我要加说明怎么办?有一些字段是不需要填的怎么办?

5、其他。

这些都是不足,但是不能因为这些不足就否定了这种方法。有不足了我们去改善!让表单控件可以实现这些功能不就可以了吗?

具体的实现方法我先不写了,也许您的方法比我现在用的还要好!我现在说了可能会影响您的发挥:)。

时间: 2024-09-20 08:56:47

Step By Step 一步一步写网站[1] —— 帧间压缩,表单控件的相关文章

【自然框架】之鼠标点功能现(二):表单控件的“应用”—— 代码?只写需要的!

    [自然框架]之鼠标点功能现(一):单表的增删改查(即上次5月23日活动的一个主题)[Demo.源码下载]           看了大家的回复,好像不少人误会了,我为了突出"鼠标点,功能现",所以没有说代码,没有贴代码,这就让一些人认为我想要完全抛弃VS,自己写一个"平台"来代替,不好意思,您高估我了,我可达不到.我只是想"简单的事情点鼠标就可以了,复杂的事情就要写代码了".         还是举例子吧.比如说上次里的[表8:添加列表信息

用ASP的方法动态写出JavaScript的表单验证的函数checkSubmit()

javascript|表单验证|动态|函数 <%'请转存为CheckForm_JS.asp使用 '*****************************************************************************'函数名称:CheckForm_JS(frmName,errStr)'功能:用ASP的方法动态写出JavaScript的表单验证的函数checkSubmit()'使用方法:1.<!--Include File=URL+本函数所在的页>;' 

c++-vc中写好的程序怎么利用控件

问题描述 vc中写好的程序怎么利用控件 我用vc建了个普通的Win32 Console Application工程,代码已写好.但我想用写好的代码利用控件画曲线图,所以我建了个MFC AppWizards[exe]工程,并在里面插入了控件ntgraph,按照网上教程,我在OnInitDialog函数里面写了个简单的显示三角波的程序,并运行成功.但现在我要把我工程里面的代码和控件结合,让曲线显示出来,那该怎么办? 解决方案 for(int xx = 0;xx<1000;xx+=10) //这是我自

javascript-在JS写的页面使用active x控件问题

问题描述 在JS写的页面使用active x控件问题 问题是这样:我做了一个active x控件暂时叫A吧(A是基于mfc做的一个复杂的图形界面),A嵌入到我们公司网站的一个页面上这个页面叫W(JJavaScript写的).在ie浏览器打开W后再关闭再打开A,A不能正常显示(也不是所有浏览器都不能正常显示),根据调试情况可以推断是关闭W时,没有释放掉A对象,DLL模块没有卸载,重新打开W时,A所依赖的Dll模块没有重新加载,在新的界面线程调用afxGetThread返回都是空,也就是mfc机制在

写一个iOS复杂表单的正确姿势

前言 这几天项目的新需求中有个复杂的表单界面,在做的过程中发现要比想象中复杂很多,有好多问题需要处理.有很多东西值得写下来好好梳理下. 需求分析: 6创建网店1.png 上图便是UI根据需求给的高保真, 我们先根据这张图片来描述一下具体需求,明确一下我们都需要干些什么. 创建网店这个界面是一个复杂的表单,有"网店名称"."网店主标签"."网店简介"."网店地址"."网店座机"."email&quo

利用Ajax技术写一个迷你留言板WEB控件

ajax|web|控件 初学Ajax不久,自己写个小东西,以作学习日记留言板图片如下: 样例地址:http://www.8dao.net/miniguest/ 首先,这里用的是Access数据库,便于移动.数据库很简单,表Guest,字段有ID,Name,Content 要实现Ajax,利用asp.net ajax 1.0 bate是很方便的,在http://ajax.asp.net可以下载到.安装好后打开VS2005,新建一个ASP.net AJAX Enabled Web Site项目在里面

写一个登陆用的用户控件

控件 Ascx文件中,放入TextBox控件,分别作为用户与密码的输入,再放入一个ImageButton,其它不多说 CodeBehind页面: namespace GST.UI{ using System; using System.Data; using System.Drawing; using System.Web; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; /// <summary> ///

请问谁有c#写的带金额线的控件

问题描述 我想要实现财务上用的带金额线显示并可编辑的控件.谢谢. 解决方案 解决方案二:我的邮箱:sjw126@126.com

C++写的COM可以做成ActiveX控件吗? 假如可以,用户安装该ActiveX控件了..在WEB程序(C#)里如何调用?

问题描述 同上!!!谢谢!!! 解决方案 解决方案二:直接引用ACTIVEX的DLL