专栏首页更流畅、简洁的软件开发方式Step By Step 一步一步写网站[1] —— 帧间压缩,表单控件

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

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

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

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

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

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

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

对了先说一下这几个表,sysobjects,syscolumns。

sysobjects简单的说就是存放表名的地方,当然除了表还放了其他的信息。

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

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

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

SELECT tbl.name AS TableName, col.name AS ColName, t.name, col.length
FROM dbo.syscolumns col INNER JOIN
      dbo.sysobjects tbl ON col.id = tbl.id INNER JOIN
      dbo.systypes t ON col.xtype = t.xtype
WHERE (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、其他。 这些都是不足,但是不能因为这些不足就否定了这种方法。有不足了我们去改善!让表单控件可以实现这些功能不就可以了吗? 具体的实现方法我先不写了,也许您的方法比我现在用的还要好!我现在说了可能会影响您的发挥:)。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【自然框架】之通用权限(九):权限的验证

    继续,这是第九章了。本来这张应该好好写的,不过还是先简单介绍一下吧,以后有空再补上详细说明吧。 通用权限想要写的文章目录:(这是第九章) 1、 简介、数据库的总...

    用户1174620
  • 其实添加数据也可以这样简单——表单的第三步抽象(针对UI及后置代码)

    终于赶出来了,现写了一遍代码。 感谢大家的支持,感谢大家提出自己的看法。衷心的感谢,真的。 应该是先写第二步的,但是想一想还是先写第三步吧。 一般大项目里...

    用户1174620
  • 【自然框架】之通用权限的Demo(二):添加人员、添加账户、添加角色里面的账户以及列表的权限验证

          看了一下上一次发Demo的日期6月15日,已经过了半个多月,这个速度也实在是太慢了。还是心情的原因,恩,心理承受能力太弱了,哈哈。不过还是要坚持的,...

    用户1174620
  • linux 之mysql——约束(constraint)详解

    比如name字段中要让其用户名不重复,这就需要添加约束。或者必须注册的时候需要添加邮箱等

    用户4877748
  • 洛谷P2197 nim游戏(Nim游戏)

    题目描述 甲,乙两个人玩Nim取石子游戏。 nim游戏的规则是这样的:地上有n堆石子(每堆石子数量小于10000),每人每次可从任意一堆石子里取出任意多枚石子扔...

    attack
  • Assignment2之PyTorch实践

    0.说在前面1.准备工作1.1 transform1.2 ToTensor1.3 Normalize1.4 datasets1.5 DataLoader1.6 ...

    公众号guangcity
  • jquery 插件的3种写法

    py3study
  • 使用Cufon技术实现Web自定义字体

    在网页设计中,设计师会在设计中加入一些特殊效果的字体以使得页面更加美观,然而访问者的系统一般都是没有安装这些特殊字体的,所以使用font-family属性来定义...

    用户4962466
  • 小程序中布局突然乱掉了,到底是怎么个情况?

    就在上周,突然很多用户反馈,都说小小签到布局乱掉了(线上有四款小程序都收到这样的反馈,这里我就不广告了),经过客服反复沟通,找到了布局乱掉的必现条件: 1、IO...

    连胜
  • LeetCode 441. 排列硬币(数学解方程)

    你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币。

    Michael阿明

扫码关注云+社区

领取腾讯云代金券