zoukankan      html  css  js  c++  java
  • 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、其他。

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

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




  • 相关阅读:
    codeforces 814B An express train to reveries
    codeforces 814A An abandoned sentiment from past
    codeforces 785D D. Anton and School
    codeforces 785C Anton and Fairy Tale
    codeforces 791C Bear and Different Names
    AOP详解
    Spring集成JUnit测试
    Spring整合web开发
    IOC装配Bean(注解方式)
    IOC装配Bean(XML方式)
  • 原文地址:https://www.cnblogs.com/jyk/p/686101.html
Copyright © 2011-2022 走看看