zoukankan      html  css  js  c++  java
  • FineUI之使用SQL脚本从数据库表中生成对应的输入控件

    在WEB开发时。常常须要根据数据库表中的字段建立对应的输入控件,来获取输入的数据。每次都须要按字段来敲,显然太低效。并且easy出错。这里提供一个SQL脚本生成对应输入控件的方法。

    USE DBDemo
    DECLARE @TEMP_TABLE_NAME NVARCHAR(512)
    DECLARE @WIDTH NVARCHAR(50)
    
    SET @TEMP_TABLE_NAME='Stuff'
    SET @WIDTH='200'
    
    SELECT 
     '<f:'+TOKEN+' runat="server" ID="'+TOKEN+'_'+COLUMN_NAME+'" Label="'
     --没有描写叙述的字段,使用COLUMN_NAME作为Label
     +CAST(CASE 
    		WHEN LEN(CAST(REMARK AS NVARCHAR(150)))<=0 THEN COLUMN_NAME 
    		WHEN LEN(CAST(ISNULL(REMARK,'') AS NVARCHAR(150)))<=0 THEN COLUMN_NAME
    		ELSE REMARK 
    	   END
    	   AS NVARCHAR(150)
    	  )
     +'" '+' Width="'+@WIDTH+'"'+'></f:'+TOKEN+'>' AS DATA --标记串
     --,TABLE_NAME,COLUMN_NAME,DATA_TYPE,TOKEN,EXTEND_STR,REMARK
    FROM
    (
    	SELECT 
    		   TEMP_SCHEMA_COLUMNS.TABLE_NAME ,--AS '表名',
    		   TEMP_SCHEMA_COLUMNS.COLUMN_NAME ,--AS '列名',
    		   TEMP_SCHEMA_COLUMNS.DATA_TYPE ,--AS '类型',
    		   TEMP_EXTENDED_PROPERTIES.value AS REMARK ,--AS '描写叙述',
    		   (
    			   CASE 	       
    					WHEN TEMP_SCHEMA_COLUMNS.DATA_TYPE='int' THEN 'NumberBox'
    					WHEN TEMP_SCHEMA_COLUMNS.DATA_TYPE='numeric' THEN 'NumberBox'
    					WHEN TEMP_SCHEMA_COLUMNS.DATA_TYPE='smallint' THEN 'NumberBox'
    					WHEN TEMP_SCHEMA_COLUMNS.DATA_TYPE='datetime' THEN 'DatePicker'
    					WHEN TEMP_SCHEMA_COLUMNS.DATA_TYPE='bit' THEN 'CheckBox'							
    					ELSE 'TextBox'
    			   END
    			) AS TOKEN,--标记
    			(
    				CASE 
    					WHEN TEMP_SCHEMA_COLUMNS.DATA_TYPE='int' THEN 'DecimalPrecision="0"'
    					WHEN TEMP_SCHEMA_COLUMNS.DATA_TYPE='smallint' THEN 'DecimalPrecision="0"'
    					ELSE ''
    				END
    			) AS EXTEND_STR --特殊属性标记串
    	FROM
    	(
    		(
    			SELECT TEMP_TABLES.name AS table_name,
    				   TEMP_COLUMNS.name AS column_name,
    				   TEMP_COLUMNS.id AS table_id,
    				   TEMP_COLUMNS.colid AS column_id FROM
    			(SELECT * FROM   sysobjects WHERE type='U') AS TEMP_TABLES
    			INNER JOIN
    			(SELECT * FROM syscolumns ) AS TEMP_COLUMNS ON
    			TEMP_TABLES.id=TEMP_COLUMNS.id
    		) AS TEMP_TABLE_COLUMNS		
    		INNER JOIN
    		(
    			select TABLE_NAME,COLUMN_NAME,DATA_TYPE from information_schema.columns 
    		) AS TEMP_SCHEMA_COLUMNS
    		ON TEMP_SCHEMA_COLUMNS.TABLE_NAME=TEMP_TABLE_COLUMNS.table_name 
    		   AND 
    		   TEMP_SCHEMA_COLUMNS.COLUMN_NAME=TEMP_TABLE_COLUMNS.column_name		
    		FULL JOIN
    		(
    		   SELECT value,major_id,minor_id FROM sys.extended_properties
    		) AS TEMP_EXTENDED_PROPERTIES
    		ON TEMP_TABLE_COLUMNS.table_id=TEMP_EXTENDED_PROPERTIES.major_id
    		   AND 
    		   TEMP_TABLE_COLUMNS.column_id=TEMP_EXTENDED_PROPERTIES.minor_id
    	)
    	WHERE TEMP_SCHEMA_COLUMNS.TABLE_NAME=@TEMP_TABLE_NAME
    ) AS TEMP_TABLE

    说明:

    1.DBDemo是数据库名称。依实际情况指定。
    2.參数@TEMP_TABLE_NAME为相生成输入控件的数据库表名,依实际情况指定。

    这里是Stuff。
    3.參数@WIDTH为控件的宽度,依实际情况指定。

    这里是200。
    4.TOKEN为根据字段类型生成相应的标记。实际使用中。可能相应的标记不太准确。请依使用情况作出调整。
    5.EXTEND_STR是特殊属性标记串。

    这里对NumberBox控件中。为int和smallint限定小数位数为0.即DecimalPrecision="0"。
    6.控件中的Label,以字段的描写叙述作为首选,假设没有字段描写叙述的。则使用字段名。



    生成的标记例如以下图

    Web页面中使用例如以下图


    生成的效果图例如以下图




    转载请注明出处http://blog.csdn.net/xxdddail/article/details/37877691

  • 相关阅读:
    LoadRunner脚本增强技巧之参数化(二)
    LoadRunner脚本增强技巧之参数化(一)
    LoadRunner脚本增强技巧之手动关联
    LoadRunner脚本增强技巧之自动关联
    LoadRunner录制用户操作
    Fiddler绕过前端直接和后台进行交互
    Android手机Fiddler真机抓包
    zabbix自定义监控项二
    zabbix自定义监控项一
    zabbix主机自动发现和监控
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6849173.html
Copyright © 2011-2022 走看看