常用代码搜集

一、sql
1.排除工作日函数
CREATE FUNCTION [dbo].[getWorkDays] 
(
@begin_date datetime,
@end_date datetime
)
RETURNS int
AS
BEGIN
DECLARE @workdays int
DECLARE @begin_day_of_work int
DECLARE @totalDays int

SET @workdays = 0
SET @totalDays = 0
SET @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)  
END	
SET @totalDays = datediff(day,@begin_date,@end_date)+1
SET @workdays = @workdays + floor(@totalDays/7)*5
IF (@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 @workdays
END

2.给表添加/删除字段,添加主键,外键
用SQL语句添加删除修改字段
1.增加字段
     alter table docdsp  add dspcode char(200)
2.删除字段
     ALTER TABLE table_NAME DROP COLUMN column_NAME
3.修改字段类型
     ALTER TABLE table_name ALTER COLUMN column_name new_data_type
4.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 not
exists'
另法:
判断表的存在性:
    select count(*) from sysobjects where type='U'
and name='你的表名'
判断字段的存在性:
    select count(*) from syscolumns
    where
	id  = (select id from sysobjects where type='U' and name='你的表名')
	and name = '你要判断的字段名'
 
一个小例子
--假设要处理的表名为:tb
--判断要添加列的表中是否有主键
if exists(select 1 from sysobjects where
parent_obj=object_id('tb') and xtype='PK')
begin
print
'表中已经有主键,列只能做为普通列添加'
--添加int类型的列,默认值为0
alter table tb add 列名 int default
0 
end
else
begin
print '表中无主键,添加主键列'
--添加int类型的列,默认值为0
alter table tb add 列名 int primary key default 0 
end
7.随机读取若干条记录
      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 n
8.说明:日程安排提前五分钟提醒
      SQL: select * from 日程安排 where datediff(minute,f开始时间,getdate())>5
9.前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=U
13.列出表里的所有的字段名
      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 type
15.说明:初始化表table1
      TRUNCATE TABLE table1
16.说明:几个高级查询运算词
  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 数值2
19.说明: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 a
22.说明:拷贝表(拷贝数据,源表名: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-name
25.说明:删除数据库
      drop database dbname
26.说明:备份sql server
  --- 创建备份数据的 device
      USE master
      EXEC sp_addumpdevice disk, testBack, c:\mssql7backup\MyNwind_1.dat
  --- 开始 备份
      BACKUP DATABASE pubs TO testBack
27.说明:创建新表
      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 only
28.说明:
  删除新表:drop table tabname
29.说明:
  增加一个列: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 viewname
33.说明:几个简单的基本的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 a
inner 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...then

6.不同数据库的两张表,将一张表中相应字段的数据对应填充到另一张表

7.往一张空表添加数据
   法一:select * into b from a where 1<>1
  法二:select top 0 * into b from a

二、asp.net
1.asp.net页面传值方式,每种方式的生命周期
ViewState,Cookie,Session,Application,Transfer,Response.Redirect?id=,表单

2.数据源绑定控件,每种控件的使用情况,效率高低
GridView,DataGrid,DataList,Repeater

3.对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,规定每页条数为pagecount
for(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语句+"");可以大大提高效率

三、JS
1.在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.去掉小数点末尾的0
		public 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


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值