常用代码搜集

来源:互联网 发布:怎么做淘宝客漏洞赚钱 编辑:程序博客网 时间:2024/06/06 02:13
一、sql1.排除工作日函数CREATE FUNCTION [dbo].[getWorkDays] (@begin_date datetime,@end_date datetime)RETURNS intASBEGINDECLARE @workdays intDECLARE @begin_day_of_work intDECLARE @totalDays intSET @workdays = 0SET @totalDays = 0SET @begin_day_of_work = datepart(dw,@begin_date)IF (@begin_day_of_work>1 and @begin_day_of_work<7) BEGIN   SET @begin_date = dateadd(day,-@begin_day_of_work%7,@begin_date)   IF (@begin_day_of_work-2) > 0      SET @workdays = @workdays - (@begin_day_of_work-2)  ENDSET @totalDays = datediff(day,@begin_date,@end_date)+1SET @workdays = @workdays + floor(@totalDays/7)*5IF (@totalDays%7-2)>0    SET @workdays = @workdays+(@totalDays%7-2)SET @workdays = @workdays-(SELECT count(*) FROM s_workday WHERE sdate>=@begin_date and sdate<=@end_date and is_holiday=1)SET @workdays = @workdays+(SELECT count(*) FROM s_workday WHERE sdate>=@begin_date and sdate<=@end_date and is_workday=1)RETURN @workdaysEND2.给表添加/删除字段,添加主键,外键用SQL语句添加删除修改字段1.增加字段     alter table docdsp  add dspcode char(200)2.删除字段     ALTER TABLE table_NAME DROP COLUMN column_NAME3.修改字段类型     ALTER TABLE table_name ALTER COLUMN column_name new_data_type4.sp_rename 改名   更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。    语法    sp_rename [ @objname = ]'object_name' ,        [ @newname = ] 'new_name'        [ , [ @objtype =] 'object_type' ]        如:EXEC sp_rename   'newname','PartStock'    示例    A.   重命名表    下例将表   customers   重命名为   custs。       EXEC   sp_rename   'customers',   'custs'       B.   重命名列    下例将表   customers   中的列   contact   title   重命名为   title。       EXEC   sp_rename   'customers.[contact   title]',   'title',   'COLUMN'  5.sp_help 显示表的一些基本情况    sp_help 'object_name'    如:EXEC sp_help 'PartStock'6.判断某一表PartStock中字段PartVelocity是否存在if    exists     (select     *     from     syscolumns     where    id=object_id('PartStock')     and     name='PartVelocity') print    'PartVelocity exists'else print 'PartVelocity notexists'另法:判断表的存在性:    select count(*) from sysobjects where type='U'and name='你的表名'判断字段的存在性:    select count(*) from syscolumns    whereid  = (select id from sysobjects where type='U' and name='你的表名')and name = '你要判断的字段名' 一个小例子--假设要处理的表名为:tb--判断要添加列的表中是否有主键if exists(select 1 from sysobjects whereparent_obj=object_id('tb') and xtype='PK')beginprint'表中已经有主键,列只能做为普通列添加'--添加int类型的列,默认值为0alter table tb add 列名 int default0 endelsebeginprint '表中无主键,添加主键列'--添加int类型的列,默认值为0alter table tb add 列名 int primary key default 0 end7.随机读取若干条记录      Access语法:SELECT top 10 * From 表名 ORDER BY Rnd(id)      Sql: server:select top n * from 表名 order by newid()  mysql: select * From 表名 Order By rand() Limit n8.说明:日程安排提前五分钟提醒      SQL: select * from 日程安排 where datediff(minute,f开始时间,getdate())>59.前10条记录      select top 10 * form table1 where 范围10.包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表      (select a from tableA ) except (select a from tableB) except (select a from tableC)11.说明:随机取出10条数据      select top 10 * from tablename order by newid()12.列出数据库里所有的表名      select name from sysobjects where type=U13.列出表里的所有的字段名      select name from syscolumns where id=object_id('TableName')14.说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select中的case。      select type,sum(case vender when A then pcs else 0 end),  sum(case vender when C then pcs else 0 end),  sum(case vender when B then pcselse 0 end)   FROM tablename group by type15.说明:初始化表table1      TRUNCATE TABLE table116.说明:几个高级查询运算词  A: UNION 运算符  UNION 运算符通过组合其他两个结果表(例如TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNIONALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。  B: EXCEPT 运算符  EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。  C: INTERSECT 运算符  INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。  注:使用运算词的几个查询结果行必须是一致的。17.说明:在线视图查询(表名1:a )      select * from (SELECT a,b,c FROM a) T where t.a > 1;18.说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括      select * from table1 where time between time1 and time2      select a,b,c, from table1 where a not between 数值1 and 数值219.说明:in 的使用方法      select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)20.说明:两张关联表,删除主表中已经在副表中没有的信息      delete from table1 where not exists (select * from table2 where table1.field1=table2.field1)21.说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)  法一:select * into b from a where 1<>1  法二:select top 0 * into b from a22.说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)      insert into b(a, b, c) select d,e,f from b;23.说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)      insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件  例子:..from b in "&Server.MapPath(".")&"\data.mdb" &" where..24.创建数据库  CREATE DATABASE database-name25.说明:删除数据库      drop database dbname26.说明:备份sql server  --- 创建备份数据的 device      USE master      EXEC sp_addumpdevice disk, testBack, c:\mssql7backup\MyNwind_1.dat  --- 开始 备份      BACKUP DATABASE pubs TO testBack27.说明:创建新表      create table tabname(col1 type1 [not null] [primarykey],col2 type2 [not null],..)    根据已有的表创建新表:      A:create table tab_new like tab_old (使用旧表创建新表)      B:create table tab_new as select col1,col2… from tab_old definition only28.说明:  删除新表:drop table tabname29.说明:  增加一个列:Alter table tabname add column col type  注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。30.说明:  添加主键:Alter table tabname add primary key(col)  说明:  删除主键:Alter table tabname drop primary key(col)31.说明:  创建索引:create [unique] index idxname on tabname(col….)  删除索引:drop index idxname  注:索引是不可更改的,想更改必须删除重新建。32.说明:  创建视图:create view viewname as select statement  删除视图:drop view viewname33.说明:几个简单的基本的sql语句  选择:select * from table1 where 范围  插入:insert into table1(field1,field2) values(value1,value2)  删除:delete from table1 where 范围  更新:update table1 set field1=value1 where 范围  查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!  排序:select * from table1 order by field1,field2 [desc]  总数:select count * as totalcount from table1  求和:select sum(field1) as sumvalue from table1  平均:select avg(field1) as avgvalue from table1  最大:select max(field1) as maxvalue from table1  最小:select min(field1) as minvalue from table1 注:删除某表中某一字段的默认值(先查询出此字段默认值约束的名字,然后将其删除即可)    1.查询字段默认值约束的名字(t1为表名,id为字段名)      select a.name as 用户表,b.name as 字段名,d.name as 字段默认值约束       from sysobjects a,syscolumns b,syscomments c,sysobjects d      where a.id=b.id and b.cdefault=c.id and c.id=d.id       and a.name='t1' and b.name='id'    2.将id字段的默认值约束删除(DF_t1_id为约束名字)      alter table t1 DROP CONSTRAINT DF_t1_id 修改字段默认值--(1)查看某表的某个字段是否有默认值约束select a.name as 用户表,b.name as 字段名,d.name as 字段默认值约束from sysobjects ainner join syscolumns b on (a.id=b.id)inner join syscomments c on ( b.cdefault=c.id )inner join sysobjects d on (c.id=d.id)where a.name='tb_fqsj'and b.name='排污口号'--(2)如果有默认值约束,删除对应的默认值约束declare @tablename varchar(30)declare @fieldname varchar(50)declare @sql varchar(300)set @tablename='tb_fqsj'set @fieldname='排污口号'set @sql=''select @sql=@sql+'alter table ['+a.name+'] drop constraint ['+d.name+']'  from sysobjects a  join syscolumns b on a.id=b.id  join syscomments c on b.cdefault=c.id  join sysobjects d on c.id=d.id  where a.name=@tablename and b.name=@fieldname exec(@sql)--(3)添加默认值约束ALTER TABLE tb_fqsj  ADD DEFAULT ('01') FOR 排污口号 WITH VALUES--创建表及描述信息       create   table   表(a1   varchar(10),a2   char(2))     --为表添加描述信息    EXECUTE   sp_addextendedproperty   N'MS_Description',   '人员信息表',   N'user',   N'dbo',   N'table',   N'表',   NULL,   NULL     --为字段a1添加描述信息    EXECUTE   sp_addextendedproperty   N'MS_Description',   '姓名',   N'user',   N'dbo',   N'table',   N'表',   N'column',   N'a1'     --为字段a2添加描述信息    EXECUTE   sp_addextendedproperty   N'MS_Description',   '性别',   N'user',   N'dbo',   N'table',   N'表',   N'column',   N'a2'     --更新表中列a1的描述属性:    EXEC   sp_updateextendedproperty   'MS_Description','字段1','user',dbo,'table','表','column',a1     --删除表中列a1的描述属性:    EXEC   sp_dropextendedproperty   'MS_Description','user',dbo,'table','表','column',a1     --删除测试    drop   table   表3.批量更新表   //批量更新表时,update一个表的列时,需要依赖另外的表,这种依赖可以是where条件子句,也可以要update的field的值依赖另外的表   通常有两种做法   1.使用存储过程   2.在程序代码里逐条循环执行这里给出一种更高效、简洁的做法,批量更新SQL ,一句SQL就可以替代麻烦的循环过程,有MS SQLServer、Oracle、DB2下的写法--关键点:t4和t1是同一个table,primary key肯定也是同一个,--并以它进行关联,这样在 select语句里即可引用到要update的表的fields UPDATE Table1 AS t1 SET (Field1,Field2) = (SELECT Field21, Field22 FROM Table2 t2     INNER JOIN Table3 t3     ON t3.Field31 = t2.Field23     INNER JOIN Table4 t4     ON t3.Field32 = t4.Filed41     WHERE t2.Field24 >= ''     AND t1.fId = t4.fId); ----------------------------MS SQLServer --------------------------------------UPDATE t1 SET Field1 = Field21, Field2 = Field22 FROM Table2 t2  INNER JOIN Table3 t3   ON t3.Field31 = t2.Field23  INNER JOIN Table4 t4   ON t3.Field32 = t4.Filed41 WHERE ((t2.Field24 >= '')   AND t1.fId = t4.fId); ----------------------------Oracle --------------------------------------------UPDATE Table1 t1 SET (Field1,Field2) = (SELECT Field21, Field22    FROM Table2 t2 INNER JOIN Table3 t3  ON t3.Field31 = t2.Field23 INNER JOIN Table4 t4  ON t3.Field32 = t4.Filed41    WHERE ((t2.Field24 >= '') AND t1.fId = t4.fId)) WHERE EXISTS (SELECT Field21, Field22   FROM Table2 t2    INNER JOIN Table3 t3 ON t3.Field31 = t2.Field23    INNER JOIN Table4 t4 ON t3.Field32 = t4.Filed41   WHERE ((t2.Field24 >= '')  AND t1.fId = t4.fId)); ---------------------------------DB2 ------------------------------------------UPDATE Table1 AS t1 SET (Field1,Field2) = (SELECT Field21, Field22    FROM Table2 t2 INNER JOIN Table3 t3  ON t3.Field31 = t2.Field23 INNER JOIN Table4 t4  ON t3.Field32 = t4.Filed41    WHERE ((t2.Field24 >= '')  AND t1.fId = t4.fId)) WHERE EXISTS (SELECT Field21, Field22   FROM Table2 t2    INNER JOIN Table3 t3 ON t3.Field31 = t2.Field23    INNER JOIN Table4 t4 ON t3.Field32 = t4.Filed41   WHERE ((t2.Field24 >= '')  AND t1.fId = t4.fId));-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- //批量删除表 T-sql里有一个快速删除表里所有数据的方法:  Truncate Table [表名] 4.常用字符转换函数一、字符转换函数1、ASCII()返回字符表达式最左端字符的ASCII 码值。在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错。2、CHAR()将ASCII 码转换为字符。如果没有输入0 ~ 255 之间的ASCII 码值,CHAR() 返回NULL 。3、LOWER()和UPPER()LOWER()将字符串全部转为小写;UPPER()将字符串全部转为大写。4、STR()把数值型数据转换为字符型数据。STR ([,length[, ]])length 指定返回的字符串的长度,decimal 指定返回的小数位数。如果没有指定长度,缺省的length 值为10, decimal 缺省值为0。当length 或者decimal 为负值时,返回NULL;当length 小于小数点左边(包括符号位)的位数时,返回length 个*;先服从length ,再取decimal ;当返回的字符串位数小于length ,左边补足空格。二、去空格函数1、LTRIM() 把字符串头部的空格去掉。2、RTRIM() 把字符串尾部的空格去掉。三、取子串函数1、left() LEFT (, )返回character_expression 左起 integer_expression 个字符。2、RIGHT() RIGHT (, )返回character_expression 右起 integer_expression 个字符。3、SUBSTRING()SUBSTRING (, , length)返回从字符串左边第starting_ position 个字符起length个字符的部分。已知: 字段A='F:\photo\Winter Leaves.jpg'   要求:分段截取每段字符[字段A不能为TEXT类型,否则报错]解决方法:---截取字符串A的第一个\左边的字符串select left(A,charindex('/',A)-1)输出结果:F:---截取\中间的字符串select   left(stuff(A,1,charindex('/',A),''),charindex('/',stuff(A,1,charindex('/',A),''))-1)输出结果:photo---截取最后一个\后面的字符串select   reverse(left(reverse(A),charindex('/',reverse(A))-1))输出结果:Winter Leaves.jpg---截取字符串A的首字幕select   STUFF(A,1, 1, '')输出结果::\photo\Winter Leaves.jpg四、字符串比较函数1、CHARINDEX()返回字符串中某个指定的子串出现的开始位置。CHARINDEX (<’substring_expression’>, )其中substring _expression 是所要查找的字符表达式,expression 可为字符串也可为列名表达式。如果没有发现子串,则返回0 值。此函数不能用于TEXT 和IMAGE 数据类型。2、PATINDEX()返回字符串中某个指定的子串出现的开始位置。PATINDEX (<’%substring _expression%’>, )其中子串表达式前后必须有百分号“%”否则返回值为0。与CHARINDEX 函数不同的是,PATINDEX函数的子串中可以使用通配符,且此函数可用于CHAR、 VARCHAR 和TEXT 数据类型。五、字符串操作函数1、QUOTENAME()返回被特定字符括起来的字符串。QUOTENAME (<’character_expression’>[, quote_ character]) 其中quote_ character 标明括字符串所用的字符,缺省值为“[]”。2、REPLICATE()返回一个重复character_expression 指定次数的字符串。REPLICATE (character_expression integer_expression) 如果integer_expression 值为负值,则返回NULL 。3、REVERSE()将指定的字符串的字符排列顺序颠倒。REVERSE () 其中character_expression 可以是字符串、常数或一个列的值。4、REPLACE()返回被替换了指定子串的字符串。REPLACE (, , ) 用string_expression3 替换在string_expression1 中的子串string_expression2。4、SPACE()返回一个有指定长度的空白字符串。SPACE () 如果integer_expression 值为负值,则返回NULL 。5、STUFF()用另一子串替换字符串指定位置、长度的子串。STUFF (, , ,)如果起始位置为负或长度值为负,或者起始位置大于character_expression1 的长度,则返回NULL 值。如果length 长度大于character_expression1 中 start_ position 以右的长度,则character_expression1 只保留首字符。六、数据类型转换函数1、CAST()CAST ( AS [ length ])2、CONVERT()CONVERT ([ length ],  [, style])1)data_type为SQL Server系统定义的数据类型,用户自定义的数据类型不能在此使用。2)length用于指定数据的长度,缺省值为30。3)把CHAR或VARCHAR类型转换为诸如INT或SAMLLINT这样的INTEGER类型、结果必须是带正号或负号的数值。4)TEXT类型到CHAR或VARCHAR类型转换最多为8000个字符,即CHAR或VARCHAR数据类型是最大长度。5)IMAGE类型存储的数据转换到BINARY或VARBINARY类型,最多为8000个字符。6)把整数值转换为MONEY或SMALLMONEY类型,按定义的国家的货币单位来处理,如人民币、美元、英镑等。7)BIT类型的转换把非零值转换为1,并仍以BIT类型存储。8)试图转换到不同长度的数据类型,会截短转换值并在转换值后显示“+”,以标识发生了这种截断。9)用CONVERT()函数的style 选项能以不同的格式显示日期和时间。style 是将DATATIME 和SMALLDATETIME 数据转换为字符串时所选用的由SQL Server 系统提供的转换样式编号,不同的样式编号有不同的输出格式。七、日期函数1、day(date_expression) 返回date_expression中的日期值2、month(date_expression)返回date_expression中的月份值3、year(date_expression)返回date_expression中的年份值4、DATEADD()DATEADD (, , )返回指定日期date 加上指定的额外日期间隔number 产生的新日期。5、DATEDIFF()DATEDIFF (, , )返回两个指定日期在datepart 方面的不同之处,即date2 超过date1的差距值,其结果值是一个带有正负号的整数值。6、DATENAME()DATENAME (, )以字符串的形式返回日期的指定部分此部分。由datepart 来指定。7、DATEPART()DATEPART (, )以整数值的形式返回日期的指定部分。此部分由datepart 来指定。DATEPART (dd, date) 等同于DAY (date)DATEPART (mm, date) 等同于MONTH (date)DATEPART (yy, date) 等同于YEAR (date)8、GETDATE()以DATETIME 的缺省格式返回系统当前的日期和时间5.case when...then6.不同数据库的两张表,将一张表中相应字段的数据对应填充到另一张表7.往一张空表添加数据   法一:select * into b from a where 1<>1  法二:select top 0 * into b from a二、asp.net1.asp.net页面传值方式,每种方式的生命周期ViewState,Cookie,Session,Application,Transfer,Response.Redirect?id=,表单2.数据源绑定控件,每种控件的使用情况,效率高低GridView,DataGrid,DataList,Repeater3.对DataTable重构,排序        private DataTable SortTable(DataTable dt, string[] pids)        {            DataTable dt0 = dt.Clone(); //复制原表结构            for (int i = 0; i < pids.Length; i++)            {                if (pids[i] != string.Empty)                {                    DataRow[] drs = dt.Select("pg_bscode =" + pids[i]);                    if (drs.Length > 0)                    {                        foreach (DataRow dr in drs)                        {                            dt0.ImportRow(dr); //导入行                        }                    }                }            }            return dt0;}4.翻页返回,跳到上一级操作的页面;    /*GridView删除一条数据仍跳转到相应页面  id = 1 可以重新跳到当前页,而且不是每次都跳到首页  */  删除5.iframe框架中的任何一级子页面,点击返回跳转到第一层主页面6.打印分页,排版思路,先求条数count,然后求页数page,规定每页条数为pagecountfor(int p = 1;p <= page; p++){    if(p == page)    {//不翻页     }else{//翻页 样式中添加page-break-after:aways}#region table_head//表头#endregion #region table_body//内容页 int i =0;for(int j = 0; j< pagecount ; j++){//第一页从0~pagecount//第二页从j(即pagecount+1)~(page-1)*pagecount;i = (page-1)*pagecount + j;}#endregion    #region table_bottom#endregion//当i == page 可能有多出的条数(比如每页显示10条,有22条数据,第三页就有8条数据为空)}7.StringBuilder 使用  StringBuilder 效率比较高,特别是较复杂的SQL语句时候,用 Append(""+SQL语句+"");可以大大提高效率三、JS1.在textbox框内输入数据,类似百度模糊查询2.Repeater中每行select值的绑定【受理审查、暂缓项目处理】,全选window.onload =function(){        var el = document.getElementById("tb").getElementsByTagName("select");            var hid = document.getElementById("tb").getElementsByTagName("input");        var s="",name="",user="";                    for(var i=1;i            var xmlDoc;        //载入XML文档        function loadxmlDocument(docName){               xmlDoc = new ActiveXObject("Microsoft.XMLDOM");               xmlDoc.async = false;               xmlDoc.validateOnParse = false;               xmlDoc.load(docName);               if(xmlDoc.parseError.errorCode != 0){                   alert(showError(xmlDoc));                   return(false);               }                           return(xmlDoc);           }               //调用数据        function startload(conid){             var option,id,jobname,fid;            xmlDoc = loadxmlDocument("Data.xml");                        if(xmlDoc == null){                 alert('您的浏览器不支持xml文件读取!请使用IE版本');             }             else{                 clearList(conid);                var DeptXML = xmlDoc.getElementsByTagName("job");                                for (var i = 0 ; i < DeptXML.length ; i ++ ){                     id = DeptXML[i].attributes[0].nodeValue;                    jobname = DeptXML[i].attributes[1].nodeValue;                    option = new Option(jobname,id);                    document.getElementById(conid).add(option);                }             }         } function loadxmlval(){    if(document.getElementById("asd").value=="true"){         for (var i = 1; i < 11; i++) {            if (document.getElementById("usel_" + i) == null){                break;             }                        var temp = document.getElementById("usel_" + i).id            startload(temp);        }            startload(document.getElementById("useall").id);        startload(document.getElementById("ddlAcpt_UserCode").id)        document.getElementById("asd").value="false";    }}4.工作台界面JS待办事宜     序号 任务名称 任务量 办理 1 合同核定 4 选择    var appendurl = new Array();function ReturnUrl(tagName){    var surl ="";            switch (tagName){            case "受理审查":                srul = "FreeTaxManage/checkreceive/ContractChkEditList.aspx";                break;            case "主任审定":                srul= "FreeTaxManage/managercheck/CCKEditList.aspx";                break;            case "合同信息录入":                srul = "FreeTaxManage/entercontract/CInputEditList.aspx";                break;            case "合同核定":                srul = "FreeTaxManage/checkcontract/CChkEditList.aspx";                break;            case "会议审理":                srul = "FreeTaxManage/expertcheck/ExpertRCEditList.aspx";                break;            case "核定证明打印":                srul = "FreeTaxManage/printcontract/AcptBusinessEditList.aspx";                break;            case "多次办理":                srul = "FreeTaxManage/morecheck/CChkEditList.aspx";                break;            case "多次办理审定":                srul = "FreeTaxManage/moremacheck/CCKEditList.aspx";                break;        }                return srul;    }function selonclick(i,bgid){    var tb = document.getElementById(bgid.id);        var tagName = tb.rows[i].cells[1].innerText;var usercode = '';appendurl = FTMIS.Web.welcome.GetPG_BsCodes(tagName,usercode).value;window.parent.document.getElementById('details').src = '' + ReturnUrl(tagName) + ''+'?ids='+bgid.id+'';} 5.多联打印____________________________________________________| 操作   ||——————————————————————————————————————————————————|| checkbox口 一联 checkbox口 二联  checkbox口 三联 ||——————————————————————————————————————————————————|(勾选就打印,可以勾选一联,也可以勾选多联) function getvalue(obj,obt) { var total="";     var cishunum= document.getElementById("sel_"+obj).value;     var temp=document.getElementById("yl_"+obj+"");     if(temp.checked){ total+="1"; }temp=document.getElementById("el_"+obj+"");     if(temp.checked){ total+="2";}temp=document.getElementById("sl_"+obj+"");     if(temp.checked){ total+="3";} var page ='';     var wh ='';     var ids=('' =="" ?"":"&ids="+'');     var page1 ='';     var wh1 ='';     var id = '';     window.open ("ContractFile.aspx?id=" + id + "&page=" + page + "&wh=" + wh+ ids +"&page1=" + page1  + "&wh1=" + wh1 + "&id1=" + obt + "&val=" + total+"&num="+cishunum,  "newwindow", "width=800px,height=600px, toolbar =yes, menubar=yes, scrollbars=yes, resizable=yes, location=no, status=no")}6.年输入完后光标自动跳转到月function Nextblur(){var len = //这里输入文本框的长度,譬如在第一个文本框内输入两个字节就跳转到下一个文本框var txt1 = document.getElementById('txt1');var txt2 = document.getElementById('txt2');if(txt1.length== len){txt2.onblur();}}7.用了微软的Ajax控件ScriptManager后,如何做到弹出消息框页面不刷新//用了AJAX控件后,弹出消息框public void AjaxClientMsg(string alert){ScriptManager.RegisterStartupScript(UpdatePanel1, GetType(), "", "alert('" + alert + "');", true);}8.select选中一个值A 点击检索按钮后,如何做到select选中的值仍为A。前提是(select是自动绑定,不是手写的固定值)  //解决方法=>这里添加一个hidden(隐藏域),选中时候给hidden的value赋值,检索后再给select赋值  window.onload = function(){  var ddluser = document.getElementById("Hidden1").value;  var dduser = document.getElementById("ddlAcpt_UserCode");      dduser.value = ddluser;  }四、封装的方法1.去掉小数点末尾的0public static string GetSimpleMoney(string MoneyString)        {            string str = MoneyString;            if (str.IndexOf(".") != -1)            {                str = MoneyString.Trim().TrimEnd(new char[] { '0' }).TrimEnd(new char[] { '.' });            }            return str;        }2.人民币与数字转换///           /// 转换人民币大小金额          ///           /// 金额          /// 返回大写形式          public string getdx(string str)        {            if (str == "")            {                str = "0";            }            decimal num = Convert.ToDecimal(str) * 10000;            string str1 = "零壹贰叁肆伍陆柒捌玖"; //0-9所对应的汉字              string str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; //数字位所对应的汉字              string str3 = ""; //从原num值中取出的值              string str4 = ""; //数字的字符串形式              string str5 = ""; //人民币大写金额形式              int i; //循环变量              int j; //num的值乘以100的字符串长度              string ch1 = ""; //数字的汉语读法              string ch2 = ""; //数字位的汉字读法              int nzero = 0; //用来计算连续的零值是几个              int temp; //从原num值中取出的值              num = Math.Round(Math.Abs(num), 2); //将num取绝对值并四舍五入取2位小数              str4 = ((long)(num * 100)).ToString(); //将num乘100并转换成字符串形式              j = str4.Length; //找出最高位              if (j > 15) { return "溢出"; }            str2 = str2.Substring(15 - j); //取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分              //循环取出每一位需要转换的值              for (i = 0; i < j; i++)            {                str3 = str4.Substring(i, 1); //取出需转换的某一位的值                  temp = Convert.ToInt32(str3); //转换为数字                  if (i != (j - 3) && i != (j - 7) && i != (j - 11) && i != (j - 15))                {                    //当所取位数不为元、万、亿、万亿上的数字时                      if (str3 == "0")                    {                        ch1 = "";                        ch2 = "";                        nzero = nzero + 1;                    }                    else                    {                        if (str3 != "0" && nzero != 0)                        {                            ch1 = "零" + str1.Substring(temp * 1, 1);                            ch2 = str2.Substring(i, 1);                            nzero = 0;                        }                        else                        {                            ch1 = str1.Substring(temp * 1, 1);                            ch2 = str2.Substring(i, 1);                            nzero = 0;                        }                    }                }                else                {                    //该位是万亿,亿,万,元位等关键位                      if (str3 != "0" && nzero != 0)                    {                        ch1 = "零" + str1.Substring(temp * 1, 1);                        ch2 = str2.Substring(i, 1);                        nzero = 0;                    }                    else                    {                        if (str3 != "0" && nzero == 0)                        {                            ch1 = str1.Substring(temp * 1, 1);                            ch2 = str2.Substring(i, 1);                            nzero = 0;                        }                        else                        {                            if (str3 == "0" && nzero >= 3)                            {                                ch1 = "";                                ch2 = "";                                nzero = nzero + 1;                            }                            else                            {                                if (j >= 11)                                {                                    ch1 = "";                                    nzero = nzero + 1;                                }                                else                                {                                    ch1 = "";                                    ch2 = str2.Substring(i, 1);                                    nzero = nzero + 1;                                }                            }                        }                    }                }                if (i == (j - 11) || i == (j - 3))                {                    //如果该位是亿位或元位,则必须写上                      ch2 = str2.Substring(i, 1);                }                str5 = str5 + ch1 + ch2;                if (i == j - 1 && str3 == "0")                {                    //最后一位(分)为0时,加上“整”                      //str5 = str5 + '整';                }            }            if (num == 0)            {                str5 = "";            }            return str5 + "整";        }3.GridView 单击行变色if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)            {                e.Item.Attributes.Add("onmouseover", "this.style.backgroundColor='#D7E1F2'");                e.Item.Attributes.Add("onmouseout", "this.style.backgroundColor='White'");                e.Item.Attributes["style"] = "cursor:pointer";                /*color:Bisque;#D7E1F2,#CEEDFA                   e.Item.Style["cursor"] = "pointer";                   e.Item.Attributes.Add("onclick", "alert(\"This row's Product Name: " + e.Item.Cells[3].Text + "\");");*/            }4.GridView 数据为空时候,显示"您所查询的数据为空"        ///         /// GridView绑定显示        ///         /// GridView的ID        /// 查询结果集        /// 标识列        public void BindMethod(GridView gv, DataSet ds, string tableColumnName)        {            int n1 = ds.Tables[0].Rows.Count;            if (n1 == 0)            {                //DataSet ds = help.SelectedCourse(Session["txtID"].ToString());                ds.Tables[0].Rows.Add(ds.Tables[0].NewRow());                gv.DataSource = ds;                gv.DataBind();                int columnCount = ds.Tables[0].Columns.Count;                gv.Rows[0].Cells.Clear();                gv.Rows[0].Cells.Add(new TableCell());                gv.Rows[0].Cells[0].ColumnSpan = columnCount;                gv.Rows[0].Cells[0].Text = "您所查询的数据为空";                gv.Rows[0].Cells[0].Style.Add("text-align", "center");            }            else            {                gv.DataKeyNames = new string[] { tableColumnName };                gv.DataSource = ds;                gv.DataBind();            }        }5.AspNetPage分页控件封装        public void BindMethod(Repeater rp, DataTable dt, AspNetPager aspPage, HtmlGenericControl lb)        {            PagedDataSource pds = new PagedDataSource();            pds.AllowPaging = true;            aspPage.RecordCount = dt.Rows.Count;            pds.PageSize = aspPage.PageSize;            pds.CurrentPageIndex = aspPage.CurrentPageIndex - 1;            pds.DataSource = dt.DefaultView;            rp.DataSource = pds;            rp.DataBind();            string count = "";            if (aspPage.RecordCount % 10 == 0)            {                count = (aspPage.RecordCount / 10).ToString();            }            else            {                count = (aspPage.RecordCount / 10 + 1).ToString();            }            lb.InnerHtml = "共 " + aspPage.RecordCount + " 项,当前为 " + aspPage.CurrentPageIndex + " 页,总共 " + count + " 页";        }6.GridView 中的 CheckBox 全选public void CheckAllCbox(GridView gv,string cbxId,bool b){for(int i = 0 ;i        /// 用户登录        ///         /// 用户名        /// 登陆密码        ///         public static bool UserLogin(string username, string pass, string dltflg)        {            string where = "USERNAME='" + username + "' and USERPASSWORD='" + PasswordToMD5(pass, 16) + "' AND DLTFLG='" + dltflg + "'";            System.Collections.Generic.IList list = new FTMIS.BLL.T_USER().GetModelList(where);            if (list.Count > 0)            {System.Web.HttpContext.Current.Session["UserInfo"] = list[0]; return true; }            return false;        }        ///         /// MD5加密        ///         /// 要加密的字符串        /// 加密位数        ///         public static string PasswordToMD5(string str, int code)        {            if (code == 16) //16位MD5加密(取32位加密的9~25字符)            {                return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower().Substring(8, 16);            }            else//32位加密            {                return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower();            }        }///         /// 登录验证        ///         /// 用户名        /// 密码        ///         public bool CheckLogin(string loginName, string loginPassword)        {            SqlParameter[] parameters = {                    new SqlParameter("@loginname", SqlDbType.VarChar,8),                    new SqlParameter("@loginpassword", SqlDbType.VarChar,16),};            parameters[0].Value = loginName;            parameters[1].Value = PasswordToMD5(loginPassword, 16);            string password = PasswordToMD5(loginPassword, 16);            string sqlstr = "SELECT UID FROM T_USER  WHERE USERNAME=@loginname  AND USERPASSWORD= @loginpassword  AND  DLTFLG='0'";            bool flag = DbHelperSQL.Exists(sqlstr, parameters);            return flag;        }12.HashTable,Dictionary使用 HashTable ht = new HashTable(); ht.add(key,value); foreach(键值对 sht in ht) { object key = sht.key; object value = sht.value; }Dictionary dty = new Dictionary;dty.add(object,object);foreach(键值对 sdty in dty){object key = sdty.key;object value = dty.value;}键值对:DictionaryEntry;KeyValuePair每个元素是一个存储在 DictionaryEntry 对象中的键/值对。键不能为空引用(Visual Basic 中为 Nothing),但值可以。注:所谓的DictionaryEntry 结构,就是定义可设置或检索的字典键值对,有一个Key属性,一个Value属性,分别代表键和值13.替换字符串中间的空格 //str:要处理的字符串,sptr:要替换的字符串;sptr1:要替换成的字符串 public string ReplaceAll(string str, string sptr, string sptr1) {     while (str.IndexOf(sptr) >= 0)     { str = str.Replace(sptr, sptr1);     }     return str; }IE6:url传中文时候用Request获取得到的是乱码=>解决方法:加密再解密IE6:弹出的div层无法隐藏select=>解决方法:用iframe五、CSS禁止换行:nowrap;table中数字换行:white-space;word-wrap/word-break;箭头:->分页:.PageNext{page-break-after:always;}垂直滚动条:.html{overflow-x:hidden;overflow-y:auto}六、页面验证1.正则表达式金额必须为正数,小数点后面4位,[禁止字母,符号,负数],长度限制七、新老数据库整合八、给客户上版本必须具备的步骤   数据库备份脚本   declare @DBName varchar(200)   set @DBName='ReportServer$SQL2005'   --截断日志   DUMP     TRANSACTION     @DBName     WITH     NO_LOG   --收缩数据库   DBCC SHRINKDATABASE (@DBName,TRUNCATEONLY)   --备份数据库   USE   master     declare @Version varchar(20)   declare @DateAppend varchar(20)   declare @BasePath varchar(200)   declare @BakPath varchar(200)   --设定备份的基本目录   set @BasePath='f:/tmp'   --设定版本,每个版本的备份放在不同的地方   set @Version='V6.1'   --设定备份的完整路径   set @BakPath=@BasePath+'/'+ @Version +'/Db.Bak'   USE   master     --创建备份设备,如果存在则无需建立   if  exists(select   *   from   sysdevices   where   name='CTOS_DB_Bak')      begin     EXEC sp_dropdevice 'CTOS_DB_Bak'   declare @tmpcmd varchar(100)   set @tmpcmd='del ' + @BakPath   EXEC sp_configure 'show advanced options',1   RECONFIGURE    EXEC sp_configure 'xp_cmdshell', 1   RECONFIGURE    exec   master..xp_cmdshell @tmpcmd   EXEC sp_configure 'show advanced options', 1    RECONFIGURE    EXEC sp_configure 'xp_cmdshell', 0   RECONFIGURE    end     EXEC   sp_addumpdevice   'disk','CTOS_DB_Bak',@BakPath   --备份数据库   BACKUP   DATABASE   @DBName   TO   CTOS_DB_Bak九、代码规范1.后台代码:  实体类初始化  全局变量声明:isNull(首字母小写,第二个单词字母大写)  public void Page_Load()  {  //变量放在一起,每个变量单独为一行;              for,foreach,switch,Method(自定义),white(){}等等;  }  2.前台js  function Method(){      var 变量;      if(条件){    }      else{    }  }  方法与方法之间要换一行3.排版快捷键:CTRL+A,K,F;  代码折叠:  CTRL+M+M(单个方法,事件折叠);CTRL+M+L+M+L(全部代码折叠)  4.如何写注释  更改记录  //update by youname 20110905 ------start------//  code  //update by youname 20110905 -------end-------//  添加记录  //add by youname 20110905 ------start------//  code  //add by youname 20110905 -------end-------//  折叠模块  #region 说明  #endregion