日期:2014-05-18  浏览次数:20523 次

Step By Step 一步一步写网站[1] —— 帧间压缩,表单控件 (离开前的最后几个贴)
好久没来了,发个老贴吧。
原文。
http://blog.csdn.net/jyk/archive/2007/03/24/1539510.aspx

另外觉得csdn   越来越没意思了,打算散点分闪人了。


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

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

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

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

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


写代码生成器的人都知道在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、其他。

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

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


------解决方案--------------------
UP
------解决方案--------------------
lz好人
------解决方案--------------------
JF
------解决方案--------------------
JF