自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(568)
  • 资源 (8)
  • 收藏
  • 关注

原创 j​a​v​a​_​u​n​i​c​o​d​e​和​中​文​相​互​转​换​的​工​具​方​法

package com.sql8.net.util;import java.util.regex.Matcher;import java.util.regex.Pattern;/**专门用于中文转Unicode * @author yangxiaoyong * @version 创建时间:2014年7月9日 下午3:46:00  * 参考:www.sql8.

2014-07-09 15:51:11 1084

转载 Spring配置Quartz例子

1.引入除spring.jar外的Quartz的jar包quartz-all-1.8.6.jar2.任务类 QuartzJobpublic class QuartzJob {public void work1() { System.out.println("Quartz的任务调度!!!work1启用……"); }public void work2

2014-07-09 14:52:26 408

转载 Spring中Quartz的配置 本文引自:SQL吧|企业网站源码下载(www.sql8.net) 原文参考:http://www.sql8.net/a/course/chengxu/java/spr

Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz,下面就看看在Spring中怎样配置Quartz:首先我们来写一个被调度的类: package com.kay.quartz;public class QuartzJob{    public void work()    {    System.out.println("

2014-07-09 14:46:55 810

转载 SpringMVC 的redirect 和forward 跳转

/** * 测试forward 和redirect 跳转取值 * @param model * @param request * @param response * @param session * @return */@RequestMapping("/testURL")public St

2014-07-07 11:24:50 653

转载 Java中的break Label 和continue Label 例子(跳出多重循环)(转)

1:break   break语句提供了一种方便的跳出循环的方法,一般只退出一重循环。  boolean test=true;  int i=0;  while(test){   i++;   if(i>=10) break;  }  执行这段程序时,尽管while条件表达式始终为真,全循环只运行10次。 2:标号label  标号提供了一种简单的bre

2014-07-04 15:08:19 7212

原创 PHP,java跨平台AES加密代码

参考部分网上代码整所得java代码 --------------------------start--------------------------------------- package com.sql8.net.util; import javax.crypto.Cipher;import java

2014-06-20 16:34:57 758

转载 AES加密CBC模式兼容互通四种编程语言平台AES加密CBC模式兼容互通四种编程语言平台【PHP、Javascript、Java、C#】

Quote   作  者:尐桀  原文地址:my.oschina.net/Jacker/blog/86383  由于本人小菜,开始对AES加密并不了解,在网络上花了比较多时间查阅资料整理;先简单从百度找来介绍: Quote     密码学中的高级加密标准(Advanced Encryption Standard,AES),又称

2014-06-20 11:41:28 1969

转载 servlet面试题总结

一、servlet生命周期:Servlet的生命周期是由servlet的容器来控制的。分为3个阶段:初始化阶段、运行阶段、销毁阶段。初始化阶段:初始化阶段步骤:Ø      Servlet容器加载servlet类,把它的 . Class 文件中的数据读到内存中。 Ø      Servlet容器创建servletConfig对象。servletConfi

2014-06-20 11:10:23 594

转载 servlet里经常会用到的一些GET方法

servlet里经常会用到一些GET方法,容易弄混,把它们记在这儿了。servletContext.getContextPath()=servletContext.getRealPath("/")=F:\ess-branch\web\servletContext.getRealPath("")=F:\ess-branch\webservletContext.getConte

2014-06-20 11:00:56 673

转载 Spring HandlerInterceptor的使用

HandlerInterceptor翻译过来就是spring拦截器,它在某些功能应用上特别有用:1. 用户是否登陆以及用户权限管理 (见http://www.ideawu.net/ideablog/category4/article174.html)2. 根据用户的选择来决定是用HTML还是用Excel来作为View (该应用后面会讲解)3. blackboard buil

2014-06-20 10:51:08 492

转载 HandlerInterceptorAdapter

一般情况下,对来自浏览器的请求的拦截,是利用Filter实现的,这种方式可以实现Bean预处理、后处理。 Spring MVC的拦截器不仅可实现Filter的所有功能,还可以更精确的控制拦截精度。 Spring为我们提供了org.springframework.web.servlet.handler.HandlerInterceptorAdapter这个适配器,继承此类,可以非常方便的实现

2014-06-20 10:32:48 637

转载 tomcat 大并发报错 Maximum number of threads (200) created for connector with address null and port 8080

1、INFO: Maximum number of threads (200) created for connector with address null and port 8091说明:最大线程数错误解决方案:使用线程池,用较少的线程处理较多的访问,可以提高tomcat处理请求的能力。使用方式:首先。打开/conf/server.xml,增加 

2014-06-18 15:21:33 680

转载 压缩和还原压缩的JS代码

压缩JS代码:packer – 最好用的 javascript 压缩工具地址:http://dean.edwards.name/packer/http://kan.willin.org/?page_id=1288恢复JSMIN等工具压缩的JS代码:Javascript Beautifier能够将jsmin压缩后的js文件内容重新恢复成可读性很好的js文件

2014-06-17 14:09:48 1024

转载 java.lang.OutOfMemoryError处理错误

原因: 常见的有以下几种:1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据;2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;3.代码中存在死循环或循环产生过多重复的对象实体;4.使用的第三方软件中的BUG;5.启动参数内存值设定的过小;常见错误提示: 1.tomcat:java.lang.OutOfMemoryError:

2014-06-17 11:08:58 461

转载 freemark null处理

以下引用官方描述: 引用The FreeMarker template language doesn't know the Java language null at all. It doesn't have null keyword, and it can't test if something is null or not. 1.判断是否存在,通过exists关键字

2014-06-16 14:36:48 575

转载 Hibernate如何设置一对多cascade

一对多的cascade的问题两张表 一张Orders表 一张Orderitem表我是这样设置的关系:Orders.hbm.xml:        lazy="false"        inverse="false"        cascade="all" >              Orderitem.hbm.xml:        n

2014-06-16 10:59:18 994

转载 hibernate多对一关联映射(cascade的使用)

一. cascade属性的介绍     1.  取值: all、none、save-update、delete     2.  all --  在所有情况下都执行级联操作          none -- 在所有情况下都不执行级联操作          save-update -- 在保存和更新的时候执行级联操作          delete -- 在删除

2014-06-16 10:56:55 495

转载 hibernate 的级联保存和关联关系

Customer 和 Orders 是一对多的关系,Orders和Customer是多对一关系,即这两个双向关联.Customer 和Bid是一对一的关系,一对一的关系就不存在双向和单向了 如下是他们的类:customer.java Java代码  package com.reflesh;    import java.u

2014-06-16 10:47:48 523

转载 Hibernate实现one-to-one级联保存

在具体的项目应用中,我们很少会用到一对一的级联操作,且很多时候一对一的操作可以通过多对一实现,但是一对一有自己的好处,就是在任何时候都能保证主外键数据的一致性,但是多对一的情况下未必能做到.我在项目中具体用到了一对一的级联操作,从网上拿了 一个例子来做,但是没有成功,于是只好自己研究,现在把修改后的代码帖出来.本例子使用hibernate3.jar+oracle数据库库表:CARD

2014-06-16 09:50:12 1016

转载 do{}while(false);在java中的妙用.

在以前写C程序中经常会有这样的情景. 打开一个资源的句柄. 在打开的这个资源上操作进行多次操作,每一步失败都要关闭这个资源句柄并摧毁它:if(x1) { close(hd);destory(hd);}if(x2) { close(hd);destory(hd);}if(x3) { close(hd);destory(hd);}等等,如果操作超过3条语句,比如有七八条

2014-06-13 14:04:52 2803

转载 tomcat日志处理,每日保存一个文件,清空catalina.out

#!/bin/bashcd `dirname $0`pwdd=`date +%Y%m%d`d7=`date -d'7 day ago' +%Y%m%d`cd ../logs/cp catalina.out catalina.out.${d}cat /dev/null > catalina.outrm -rf catalina.out.${d7}

2014-06-12 14:47:56 5752

转载 native2ascii.exe 转码工具使用说明

1. native2ascii.exe的介绍:native2ascii是sun java sdk提供的一个转码工具, 用来将别的文本类文件(比如 *.txt, *.ini, *.properties, *.java 等等)编码转为Unicode编码。2. 如何获取 native2ascii.exe?安装了jdk后,假如你是在windows上安装,那么在jdk的安装目录下,会有一个bin

2014-06-11 14:54:51 548

转载 Linux中dd命令详解

一、dd命令dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512;c=1;k=1024;w=2参数注释:if=文件名:输入文件名,缺省为标准输入。即指定源文件。of=文件名:输出文件名,缺省为标准输出。即指定目的文件。ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。

2014-06-11 13:18:31 477

转载 关于swap分区大小

几乎所有Linux 系统管理的书上都推荐设置交换分区大小为内存的2倍。这些建议到了现在就是那么适用了,现在的服务器动不动就是 16GB/32GB 内存,难道相应的交换分区也要扩大到 32GB/64GB?根据 OpenBSD 的安装建议:Many people follow an old rule of thumb that your swap partition should be twice

2014-06-11 13:17:52 902

转载 CentOS 手动增加、删除swap区

SWAP是Linux中的虚拟内存,用于扩充物理内存不足而用来存储临时数据存在的。它类似于Windows中的虚拟内存。在Windows中,只可以使用文件来当作虚拟内存。而linux可以文件或者分区来当作虚拟内存。首先查看当前的内存和swap 空间大小(默认单位为k, -m 单位为M):free -m1free-m

2014-06-11 13:17:10 1213

转载 Linux 内存 性能调优

内存是影响Linux性能的主要因素之一,内存资源的充足与否直接影响应用系统的使用性能。free命令:监控Linux内存使用状况。由上图可知,空闲内存是free+buffers+cached=155MB一般来说如果空闲内存/物理内存>70%,内存性能优;如果小于20%,则性能差,需要添加内存。vmstat命令:显示关于系统各种资源之间相关性能的简要信息。 如果si和so数

2014-06-11 12:44:21 833

转载 Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。一般vmstat

2014-06-11 11:48:03 390

原创 使用bash命令,普通用户登陆无法使用tab补全或显示不正常

某日使用普通用户登陆aix,发现在无法使用tab补全及显示不正常而且命令符只显

2014-06-11 10:35:14 1162 1

转载 tomcat起步在80端口 Permission denied <null>80

tomcat启动在80端口 Permission denied :80解决方案:linux 下将tomcat的server.xml的端口改为80后以tomcat身份无法启动tomcat! 在redhat上启动tomcat(将server.xml中的端口改为80)su - tomcat -c "$CATALINA_HOME/bin/startup.sh"后出现:Catalina.st

2014-06-11 09:56:35 824

转载 Linux操作系统下让Tomcat启动在80端口

解决方案:linux 下将tomcat的server.xml的端口改为80后以tomcat身份无法启动tomcat。在redhat上启动tomcat(将server.xml中的端口改为80) su - tomcat -c "$CATALINA_HOME/bin/startup.sh" 后出现:Catalina.start: LifecycleException: nul

2014-06-11 09:49:19 500

转载 在mac os(ubuntu等一样)下启动tomcat时候,输出控制台信息

老规矩,先进入tomcat的bin目录cd /Users/apple/Desktop/tomcat_war/apache-tomcat-7.0.42/bin接下来 直接运行sh catalina.sh这下我们可以看到Usage: catalina.sh ( commands ... )commands:  debug             Start Cata

2014-06-10 16:21:29 2347

转载 Linux Shell编程入门

从程序员的角度来看,Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用Shell脚本编程,完成更加复杂的操作。在LinuxGUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用。深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修功课之一。Linux的Shell种类

2014-06-10 14:31:32 425

转载 gt ge lt le ne 缩写 的 英文 含义

-ne  :  (not equal) 不相等-gt   :    (greater than) 大于-lt    : (less than) 小于-ge  :    (greater than or equal) 大于或等于-le   :    (less than or equal)小于或等于

2014-06-10 14:31:02 5762

原创 爱美眉aimeimei.pw整站下载、2G图片、上万数据

官网:http://www.aimeimei.pw美眉aimeimei.pw整站源码安装方法:1.把文件上传到你的站点的根目录,然后运行 http://你的域名/install/index.php 安装,根据提示填写好相关信息,点“下一步”...即可完成安装。注:若提示无法安装,页面出现DIY字样。请进入install文件夹,将install_lock.txt文件删掉。把index

2014-06-06 16:16:25 8469

转载 LOADRUNNER8.1中文版加10000客户端破解补

http://www.17testing.com/download/LR_8.1.isoLOADRUNNER8.1 用迅雷下载http://www.17testing.com/download/LR_8.1ChinesePack.iso 中文包http://blog.chinaunix.net/upfile/070509151030.rar10000客户端的破解补丁LR 8.1的介

2014-06-05 14:13:28 1337 1

转载 让网站飞起来02--服务器缓存技术

前提提要:第一个介绍的是《让网站飞起来01---浏览器缓存技术》介绍服务器,肯定要先支持服务器在网站架构中的位置和作用,然后在介绍几种常见的服务器缓存配置。正文对服务器在网站中位置作用有个大概了解:lamp架构图上图主要介绍了三种服务器,也是比较常用的服务器,下面就介绍这三种服务器的缓存配置。apache是作为正向代理服务器缓存,nginx和squid主要作为反向代理服

2014-06-05 11:50:08 632

转载 让网站飞起来01---浏览器缓存技术

前提说明:缓存技术在在网站应用中非常重要,在减少服务器请求压力和用户浏览速度加块方面有着功不可没的功劳,昨天在我《网站优化--让你的网页飞起来》里面有人问道关于浏览器缓存原理的问题,萌发了我研究缓存技术的兴趣,本文主要介绍浏览器的缓存原理。正文:缓存技术:在介绍缓存技术之前,我们先看一张LAMP网站的价格图,通过架构图我们可以很清晰的对网站整体缓存有一定认识    

2014-06-05 11:49:45 452

转载 网站优化--让你的网页飞起来

摘要:网站快要上线了,但是网站打开速度很慢怎么办?这里介绍一下对网页进行优化的方法和技巧,加快网页浏览速度,让网页速度飞起来  测试网页性能工具⑴Page Speed:是开源 Firefox/Firebug 插件。网站管理员和网络开发人员可以使用 Page Speed 来评估他们网页的性能,并获得有关如何改进性能的建议。⑵yslow:YSlow可以对网站的页面进行分

2014-06-05 11:48:54 527

转载 nginx图片缓存服务器配置实战

1、图片目录设置:假定服务器主目录为nginx的默认目录:/usr/local/nginx-0.8.32/html/图片存放目录为:/usr/local/nginx-0.8.32/html/SD/images图片缓存目录为:/usr/local/nginx-0.8.32/html/SD/images_cache图片临时目录为:/usr/local/nginx-0.8.32/html

2014-06-05 11:48:05 842

转载 windows下整合 tomcat 和 nginx【原创】

tomcat自带的apache服务器对于并发请求的处理能力比较差,并且耗费资源很大,而nginx这方便却很强悍,以下是在windows下整合tomcat和nginx的过程。1.准备工作  下载tomcat(http://tomcat.apache.org/download-70.cgi),下载nginx(http://nginx.org/en/download.html),我用的版本是to

2014-06-04 10:54:14 418

jQueryAPI,ajax十分好用

jQuery 核心函数 jQuery(expr, [context]) jQuery(html, [ownerDoc]) jQuery(html, props) jQuery(elements) jQuery() jQuery(callback) jQuery 对象访问 each(callback) size() length selector context get() get(index) index(subject) 数据缓存 data([name] , [value]) data(obj) removeData(name) $.data([el], [key], [val]) 队列控制 queue(name ,[cb|queue]) dequeue(name) clearQueue([queueName]) 插件机制 jQuery.fn.extend(object) jQuery.extend(object) 多库共存 jQuery.noConflict([ex]) 属性 属性 attr(name) attr(properties) attr(key, value) attr(key, fn) removeAttr(name) CSS 类 addClass(class | fn) removeClass([class | fn]) toggleClass(class|fn [, sw]) HTML代码/文本/值 html( [val | fn] ) text( [val | fn] )

2012-05-14

delphi动态虚拟覆盖重载重定义的区别

DELPHI中方法的类型及其覆盖、重载 1、静态方法是方法的缺省类型,对它就像对通常的过程和函数那样调用,编译器知道这些方法的地址,所以调用一个静态方法时它能把运行信息静态地链接进可执行文件,所以,静态方法速度最快,但它们却不能被覆盖来支持多态性。 2、虚拟方法和静态方法的调用方式相同。由于虚拟方法能被覆盖,在代码中调用一个指定的虚拟方法时编译器并不知道它的地址,因此,编译器通过建立虚拟方法表(VMT)来查找在运行时的函数地址。所有的虚拟方法在运行时通过VMT来高度,一个对象的VMT表中除了自己定义的虚拟方法外,还有它的祚的所有的虚拟方法,因此虚拟方法比动态方法用的内存要多,但它执行得比较快。 3、动态方法跟虚拟方法基本相似,只是它们的高度系统不同。编译器为每一个动态方法指定一个独一无二的数字,用这个数字和动态方法的地址构造一个动态方法表(DMT)。不像VMT表,在DMT表中仅有它声明的动态方法,并且这个方法需要祖先的DMT表来访问它蓁的动态方法。正因为这样动态方法比虚拟方法用的内存要少,但执行起来罗慢,因为有可能要到祚对象的DMT中查找动态法。 4、OP通过覆盖使一方法在不同的派生类间表现出不同的行为。OP中能被覆盖的方法是在声明时被标识为virtual或dynamic的方法。为了覆盖一个方法,在派生类的声明中用override代替virtual或dynamic。用了override后,编译器就会用新的方法替换VMT中原先的方法,而原先的方法也还存在,而如果用override再次声明一个静态方法,则是真正的覆盖,是用新的方法完全替换在祖先类中的同明方法。 5、方法重载的意义:比如说,你要写一个求两数商的函数(当然只是个比喻),你希望这个函数可以处理所有的数值类型,但PASCAL的运算对类型实行严格检查,你不得不用不同的程序来运算不同类型的数值,这样你就必须为每一种类型写一个同样功能的函数,并使用不同的函数名,坏处我想你是知道的。而重载却可以解决这个问题,同样的函数名,编译器可以用不同的形参类型决定调用哪个函数。Top dynamic和virtual的不同之处 delphi动态虚拟覆盖重载重定义的区别 (www.ip8000.com www.sql8.net)

2010-11-24

delphi动态虚拟覆盖重载重定义的区别

DELPHI中方法的类型及其覆盖、重载 1、静态方法是方法的缺省类型,对它就像对通常的过程和函数那样调用,编译器知道这些方法的地址,所以调用一个静态方法时它能把运行信息静态地链接进可执行文件,所以,静态方法速度最快,但它们却不能被覆盖来支持多态性。 2、虚拟方法和静态方法的调用方式相同。由于虚拟方法能被覆盖,在代码中调用一个指定的虚拟方法时编译器并不知道它的地址,因此,编译器通过建立虚拟方法表(VMT)来查找在运行时的函数地址。所有的虚拟方法在运行时通过VMT来高度,一个对象的VMT表中除了自己定义的虚拟方法外,还有它的祚的所有的虚拟方法,因此虚拟方法比动态方法用的内存要多,但它执行得比较快。 3、动态方法跟虚拟方法基本相似,只是它们的高度系统不同。编译器为每一个动态方法指定一个独一无二的数字,用这个数字和动态方法的地址构造一个动态方法表(DMT)。不像VMT表,在DMT表中仅有它声明的动态方法,并且这个方法需要祖先的DMT表来访问它蓁的动态方法。正因为这样动态方法比虚拟方法用的内存要少,但执行起来罗慢,因为有可能要到祚对象的DMT中查找动态法。 4、OP通过覆盖使一方法在不同的派生类间表现出不同的行为。OP中能被覆盖的方法是在声明时被标识为virtual或dynamic的方法。为了覆盖一个方法,在派生类的声明中用override代替virtual或dynamic。用了override后,编译器就会用新的方法替换VMT中原先的方法,而原先的方法也还存在,而如果用override再次声明一个静态方法,则是真正的覆盖,是用新的方法完全替换在祖先类中的同明方法。 5、方法重载的意义:比如说,你要写一个求两数商的函数(当然只是个比喻),你希望这个函数可以处理所有的数值类型,但PASCAL的运算对类型实行严格检查,你不得不用不同的程序来运算不同类型的数值,这样你就必须为每一种类型写一个同样功能的函数,并使用不同的函数名,坏处我想你是知道的。而重载却可以解决这个问题,同样的函数名,编译器可以用不同的形参类型决定调用哪个函数。Top www.ip8000.com sql8.net

2010-11-24

高清缩略图代码,可删除原图不会出现在XXX.jpg正在使用中,水印代正在研究中

我在网上用了很多的相关代码或者缩略图水印类,但是都有一个问题就是删除不了原图 public static void myGetThumbnailImage(string SourceFile, string strSavePathFile, int ThumbWidth, int ThumbHeight, string BgColor) { System.Drawing.Image oImg = System.Drawing.Image.FromFile(SourceFile); //小图 int intwidth, intheight; if (oImg.Width > oImg.Height) { if (oImg.Width > ThumbWidth) { intwidth = ThumbWidth; intheight = (oImg.Height * ThumbWidth) / oImg.Width; } else { intwidth = oImg.Width; intheight = oImg.Height; } } else { if (oImg.Height > ThumbHeight) { intwidth = (oImg.Width * ThumbHeight) / oImg.Height; intheight = ThumbHeight; } else { intwidth = oImg.Width; intheight = oImg.Height; } } //构造一个指定宽高的Bitmap Bitmap bitmay = new Bitmap(intwidth, intheight); Graphics g = Graphics.FromImage(bitmay); Color myColor; if (BgColor == null) myColor = Color.FromName("white"); else myColor = Color.FromName(BgColor); //用指定的颜色填充Bitmap g.Clear(myColor); g.InterpolationMode = InterpolationMode.HighQualityBicubic; //开始画图 g.DrawImage(oImg, new Rectangle(0, 0, intwidth, intheight), new Rectangle(0, 0, oImg.Width, oImg.Height), GraphicsUnit.Pixel); bitmay.Save(strSavePathFile, System.Drawing.Imaging.ImageFormat.Jpeg); g.Dispose(); bitmay.Dispose(); oImg.Dispose(); //删除源图 try { File.Delete(SourceFile); } catch { } }

2009-09-29

软件开发文档|需求说明|设计说明|国简标准-软件

软件开发文档|需求说明|设计说明|国简标准-软件

2009-03-12

经典cookie购物车源码[GridView实现]

特别说明请注意: 根许多网友反应, using Maticsoft.Functions; 这些代码看不懂 其实Functions 这个dll是我定义常用的函数类,如果需要跟我联系索取http://sql8.net 下面有我的群号, 其中 ArtsShop.Model.Arts_Product _p = new ArtsShop.Model.Arts_Product(); ArtsShop.BLL.Arts_Product p = new ArtsShop.BLL.Arts_Product(); _p = p.GetModel(id); 这是我的商品信息的类,三层结构,这个在用时你们只能换成你们自己的,这些代码完全可以删除, 比如 MyDr[1] = _p.Title; 用来读取商品名的,你们可以改MyDr[1] = dr["productname"].ToString();就行了, AddToCart.aspx页面代码 无标题页 <asp:TextBox ID="TextBox1" runat="server" Text='' Width="44px"> <asp:Label ID="Label1" runat="server" Text=''> 保存 取消 编辑 继续购物 清空购物车 下订单 AddToCart.aspx.cs页面代码 using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using Maticsoft.Functions;public partial class AddToCart : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { int ProID; HttpCookie cookie; bool Tempbl = false; string Tempstr; if (!Page.IsPostBack) { if (!object.Equals(Request.QueryString["id"], null)) { ProID = int.Parse(Request.QueryString["id"]); //创购物车cookie yxy .//sql8.net if (object.Equals(Request.Cookies["ztbscart"], null)) cookie = new HttpCookie("ztbscart"); else cookie = Request.Cookies["ztbscart"]; //判断是否已存在于购物车内 yxy // sql8.net for (int i = 0; i < cookie.Values.Keys.Count; i++) { if (!object.Equals(cookie.Values.Keys[i], null)) { Tempstr = cookie.Values.AllKeys[i].ToString(); if (Tempstr.Trim() != "") { if (ProID == int.Parse(cookie.Values.AllKeys[i])) { Tempbl = true; break; } } } } //不未购买过则加入购物车 yxy //sql8.net if (!Tempbl) cookie.Values.Add(ProID.ToString(), "1"); else { } TimeSpan ts = new TimeSpan(0, 0, 10, 0); cookie.Expires = DateTime.Now + ts; Response.AppendCookie(cookie); } BindGrid(); } } //绑定数据 yxy //sql8.net private void BindGrid() { DataTable MyDt; DataRow MyDr; string str = ""; MyDt = new DataTable(); MyDt.Columns.Add(new DataColumn("id", str.GetType())); MyDt.Columns.Add(new DataColumn("Title", str.GetType())); MyDt.Columns.Add(new DataColumn("Num", str.GetType())); MyDt.Columns.Add(new DataColumn("Price", str.GetType())); MyDt.Columns.Add(new DataColumn("Discount", str.GetType())); MyDt.Columns.Add(new DataColumn("Vipprice", str.GetType())); MyDt.Columns.Add(new DataColumn("Totle", str.GetType())); if (!object.Equals(Request.Cookies["ztbscart"], null)) { HttpCookie cookie = Request.Cookies["ztbscart"]; double Totle; //Response.Write("|" + Request.Cookies["ztbscart"].Values.Keys[1].ToString() + "|"); //Response.End(); for (int i = 0; i < cookie.Values.Keys.Count; i++) { int id; MyDr = MyDt.NewRow(); if (cookie.Values.AllKeys[i] != "" && cookie.Values[i] != "") { id = int.Parse(cookie.Values.AllKeys[i].ToString()); ArtsShop.Model.Arts_Product _p = new ArtsShop.Model.Arts_Product(); ArtsShop.BLL.Arts_Product p = new ArtsShop.BLL.Arts_Product(); _p = p.GetModel(id); MyDr[0] = id; MyDr[1] = _p.Title; MyDr[2] = cookie.Values[i]; MyDr[3] = _p.Price; MyDr[4] = _p.Discount; MyDr[5] = _p.Vipprice1; Totle = double.Parse(MyDr[2].ToString()) * double.Parse(MyDr[5].ToString()); MyDr[6] = Totle; MyDt.Rows.Add(MyDr); } } GridView1.DataSource = MyDt.DefaultView; GridView1.DataBind(); } } protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) { //编辑某行数量 yxy //sql8.net GridView1.EditIndex = e.NewEditIndex; BindGrid(); } protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { //取消更新 yxy //sql8.net GridView1.EditIndex = -1; BindGrid(); } protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { //更新数量 yxy //sql8.net string num; TextBox tempbx = new TextBox(); Label templb = new Label(); tempbx = (TextBox)(GridView1.Rows[e.RowIndex].Cells[6]).Controls[1]; num = tempbx.Text.ToString(); HttpCookie cookie = new HttpCookie("ztbscart"); for (int i = 0; i < GridView1.Rows.Count; i++) { string id; string tempnum; id = GridView1.Rows[i].Cells[1].Text.ToString(); if (e.RowIndex == i) tempnum = num; else { templb = (Label)(GridView1.Rows[i].Cells[6]).Controls[1]; tempnum = templb.Text.ToString(); } if (tempnum.Trim() == "") tempnum = "0"; //Response.Write("ID:"+id.ToString() + "Num:"+tempnum+":"+i+"");//测试用途 yxy//sql8.net cookie.Values.Add(id, tempnum); } //Response.End(); TimeSpan ts = new TimeSpan(0, 0, 10, 0); cookie.Expires = DateTime.Now + ts; Response.AppendCookie(cookie); GridView1.EditIndex = -1; Message.GoTo("AddToCart.aspx"); } protected void LinkButton4_Click(object sender, EventArgs e) { //继续购物 yxy //sql8.net Message.WebClose(); } protected void LinkButton3_Click(object sender, EventArgs e) { //清空购物车 yxy //sql8.net CheckBox tempcb = new CheckBox(); HttpCookie cookie = new HttpCookie("ztbscart"); Label templb = new Label(); for (int i = 0; i < GridView1.Rows.Count; i++) { tempcb = (CheckBox)(GridView1.Rows[i].Cells[0]).Controls[1]; if (!tempcb.Checked) { string id; string tempnum; id = GridView1.Rows[i].Cells[1].Text.ToString(); templb = (Label)(GridView1.Rows[i].Cells[6]).Controls[1]; tempnum = templb.Text.ToString(); if (tempnum.Trim() == "") tempnum = "0"; //Response.Write("ID:"+id.ToString() + "Num:"+tempnum+":"+i+"");//测试用途 yxy//sql8.net cookie.Values.Add(id, tempnum); } } TimeSpan ts = new TimeSpan(0, 0, 10, 0); cookie.Expires = DateTime.Now + ts; Response.AppendCookie(cookie); Message.GoTo("AddToCart.aspx"); } protected void CheckAll_CheckedChanged(object sender, EventArgs e) { //全选事件 yxy //sql8.net CheckBox tempcb = new CheckBox(); bool tempbl; tempcb = (CheckBox)(GridView1.HeaderRow.Cells[0]).Controls[1]; tempbl = tempcb.Checked; for (int i = 0; i < GridView1.Rows.Count; i++) { tempcb = (CheckBox)(GridView1.Rows[i].Cells[0]).Controls[1]; tempcb.Checked = tempbl; } } } _________________________________________________________________________ 如转载请注明原出处 www.sql8.net

2008-09-11

图书店源码asp数据sql

书库源码asp数据sql如果有问题请上www.sql8.net交流

2008-09-09

图书店系统.net2003 sql2000

很好用的,购物车不错,如果问题可到www.sql8.net交流

2008-09-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除