现在的位置: 首页 > 综合 > 正文

一些常用的辅助代码 (网络收藏)

2013年07月17日 ⁄ 综合 ⁄ 共 34060字 ⁄ 字号 评论关闭

点击返回上页代码:
<form>
<p><input TYPE="button" VALUE="返回上一步" ONCLICK="history.back(-1)"></p>
</form>

弹出警告框代码:
<form>
<p><input TYPE="button" VALUE="弹出警告框" ONCLICK="AlertButton()"></p>
</form>
<script language="JavaScript"><!--
function AlertButton(){window.alert("要多多光临呀!");}
// --></script>

点击打开新窗口
<form>
<p><input TYPE="button" VALUE="打开新窗口" ONCLICK="NewWindow()"></p>
</form>
<script language="JavaScript"><!--
function NewWindow(){window.open("http://www.mcmx.com","","height=240,width=340,status=no,location=no,toolbar=no,directories=no,menubar=no");}
// --></script></body>

删除记录时弹出确认框:
<script LANGUAGE="VBSCRIPT">
a=msgbox("真的要删除该记录吗?",1,"注意")
if a=1 then
location="Dodelete.asp?id=<%=id%>" //指向执行删除的页面Dodelete.asp
else
history.go(-1)
end if
</script>

关闭打开的窗口
< a href="/" onclick="javascript:window.close(); return false;">关闭窗口</a>

清空INPUT且选定
onClick="Javascript:this.value=''" onFocus="this.select()" onMouseOver="this.focus()"

右键屏蔽
<body oncontextmenu=self.event.returnValue=false>

连串英文自动换行的解决方法 IE5.5
style="LEFT: 0px; WIDTH: 100%; WORD-WRAP: break-word" 你可修改为指定的大小如 200px

图片“重置”按钮
<script language="jscript">
function myreset()
{ document.login.reset();
document.login.focus();}
</script>
<img src="image/reclear.gif" width="69" height="20" style="cursor:hand" onfocus="this.blur()" onclick="myreset()"

画细线表格
<table style="border-collapse: collapse">

状态栏信息
<form>
<p><input TYPE="button" VALUE="状态栏信息" ONCLICK="StatusButton()"></p>
</form>
<script language="JavaScript"><!--
function StatusButton(){window.status="要多多光临呀!";}
// --></script>

最小化、最大化、关闭窗口
<object id=hh1 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Minimize"></object>
<object id=hh2 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Maximize"></object>
<OBJECT id=hh3 classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<PARAM NAME="Command" VALUE="Close"></OBJECT>

<input type=button value=最小化 onclick=hh1.Click()>
<input type=button value=最大化 onclick=hh2.Click()>
<input type=button value=关闭 onclick=hh3.Click()>
本例适用于IE

隐藏状态栏里出现的LINK信息
<a href="http://"; onMouseOver="window.status='none';return true">梦想天空</a>

文本框自动滚动条
<textarea name=words rows=18 cols=26 style="border:1 solid #000000;background-color:white; font-size:9pt; width:188; overflow:auto" wrap=hard></textarea>

全选并复制
<FORM name=test><INPUT onclick="javascript:HighlightAll('test.select1')" type=button value=全选并复制><BR><TEXTAREA name=select1 rows=3 cols=46>你好,欢迎您的光临!</TEXTAREA>
</FORM>
<SCRIPT language=Javascript>
<!--

var copytoclip=1

function HighlightAll(theField) {
var tempval=eval("document."+theField)
tempval.focus()
tempval.select()
if (document.all&&copytoclip==1){
therange=tempval.createTextRange()
therange.execCommand("Copy")
window.status="Contents highlighted and copied to clipboard!"
setTimeout("window.status=''",1800)
}
}
//-->
</SCRIPT>

屏蔽JAVASCRIPT错误
<script language="JavaScript">
<!--
function killErrors(){
return true;
}
window.onerror = killErrors;
-->
</script>

关闭子窗口时刷新父窗口

<script language="JavaScript">
<!--
self.opener.location.reload();
window.close()
-->
</script>

背景色变换
<form>
<p><input TYPE="button" VALUE="背景色变换" onClick="BgButton()"></p>
</form>
<script>function BgButton(){
if (document.bgColor=='#00ffff')
{document.bgColor='#ffffff';}
else{document.bgColor='#00ffff';}
}
</script>

检查一段字符串是否全由数字组成
<script language="Javascript"><!--
function checkNum(str){return str.match(//D/)==null}
alert(checkNum("1232142141"))
alert(checkNum("123214214a1"))
// --></script>

判断是否是字符
if (/[^/x00-/xff]/g.test(s)) alert("含有汉字");

点击刷新代码:
<form>
<p><input TYPE="button" VALUE="刷新按钮一" ONCLICK="ReloadButton()"></p>
</form>
<script language="JavaScript"><!--
function ReloadButton(){location.href="allbutton.htm";}
// --></script>

让层不被控件复盖代码:
<div z-Index:2><object xxx></object></div> # 前面
<div z-Index:1><object xxx></object></div> # 后面
<div id="Layer2" style="position:absolute; top:40;width:400px; height:95px;z-index:2"><table height=100% width=100% bgcolor="#ff0000"><tr><td height=100% width=100%></td></tr></table><iframe width=0 height=0></iframe></div>
<div id="Layer1" style="position:absolute; top:50;width:200px; height:115px;z-index:1"><iframe height=100% width=100%></iframe></div>

让层的相对定位
<div id="Layer1" style="position:relative; left:0px; top:0px; width:0px; height:0px;z-index:1">
<div id="Layer2" style="position:absolute; left:500px; top:0px; width:220px; height:220px; z-index:1">
内容
</div></div>

Flash代码以及背景透明
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="200" height="200">
<param name="movie" value="文件">
<param name="quality" value="high">
<param name="wmode" value="transparent">
<embed src="images/fish.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="220" height="220"></embed></object>

Windows Media Player 播放器
<OBJECT id=MediaPlayer1
style="LEFT: 0px; VISIBILITY: visible; POSITION: absolute; TOP: 0px;z-index:2"
codeBase=http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701standby=

Loading
type=application/x-oleobject height=300 width=320
classid=CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6 VIEWASTEXT>
<PARAM NAME="URL" VALUE="地址">

<param name="AudioStream" value="-1">
<param name="AutoSize" value="0">
<param name="AutoStart" value="-1">
<param name="AnimationAtStart" value="0">
<param name="AllowScan" value="-1">
<param name="AllowChangeDisplaySize" value="-1">
<param name="AutoRewind" value="0">
<param name="Balance" value="0">
<param name="BaseURL" value>
<param name="BufferingTime" value="5">
<param name="CaptioningID" value>
<param name="ClickToPlay" value="-1">
<param name="CursorType" value="0">
<param name="CurrentPosition" value="-1">
<param name="CurrentMarker" value="0">
<param name="DefaultFrame" value>
<param name="DisplayBackColor" value="0">
<param name="DisplayForeColor" value="16777215">
<param name="DisplayMode" value="0">
<param name="DisplaySize" value="4">
<param name="Enabled" value="-1">
<param name="EnableContextMenu" value="-1">
<param name="EnablePositionControls" value="0">
<param name="EnableFullScreenControls" value="0">
<param name="EnableTracker" value="-1">
<param name="InvokeURLs" value="-1">
<param name="Language" value="-1">
<param name="Mute" value="0">
<param name="PlayCount" value="1">
<param name="PreviewMode" value="0">
<param name="Rate" value="1">
<param name="SAMILang" value>
<param name="SAMIStyle" value>
<param name="SAMIFileName" value>
<param name="SelectionStart" value="-1">
<param name="SelectionEnd" value="-1">
<param name="SendOpenStateChangeEvents" value="-1">
<param name="SendWarningEvents" value="-1">
<param name="SendErrorEvents" value="-1">
<param name="SendKeyboardEvents" value="0">
<param name="SendMouseClickEvents" value="0">
<param name="SendMouseMoveEvents" value="0">
<param name="SendPlayStateChangeEvents" value="-1">
<param name="ShowCaptioning" value="0">
<param name="ShowControls" value="-1">
<param name="ShowAudioControls" value="-1">
<param name="ShowDisplay" value="0">
<param name="ShowGotoBar" value="0">
<param name="ShowPositionControls" value="-1">
<param name="ShowStatusBar" value="-1">
<param name="ShowTracker" value="-1">
<param name="TransparentAtStart" value="-1">
<param name="VideoBorderWidth" value="0">
<param name="VideoBorderColor" value="0">
<param name="VideoBorder3D" value="0">
<param name="Volume" value="70">
<param name="WindowlessVideo" value="0">
</OBJECT>

RealPlayer 播放器
<object id=video1 classid=" clasid:CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA"
width=320 height=240 align="middle">
<param name="controls" value="inagewindow">
<param name="console" value="chicp1">
<param name="autostar" value="true">
<param name="src" value="地址">
<embed
src="地址"
type="audio/x-pn-realaudio-plugin" console="chip1"
controls="imagewindow" width=320 height=240 autostart=true align="middle">
</embed>
</object>

---------------------------------------------------------------
---------------------------------------------------------------
1.如何用Asp判断你的网站的虚拟物理路径
答:使用Mappath方法
< p align="center" >< font size="4" face="Arial" >< b >
The Physical path to this virtual website is:
< /b >< /font >
< font color="#FF0000" size="6" face="Arial" >
< %= Server.MapPath("\")% >
< /font >< /p >

2.我如何知道使用者所用的浏览器?
答:使用the Request object方法
strBrowser=Request.ServerVariables("HTTP_USER_AGENT")
If Instr(strBrowser,"MSIE") < > 0 Then
  Response.redirect("ForMSIEOnly.htm")
Else
  Response.redirect("ForAll.htm")
End If

3.如何计算每天的平均反复访问人数
答:解决方法
< % startdate=DateDiff("d",Now,"01/01/1990")
if strdate< 0 then startdate=startdate*-1
avgvpd=Int((usercnt)/startdate) % >
显示结果
< % response.write(avgvpd) % >
that is it.this page have been viewed since November 10,1998

4.如何显示随机图象
< % dim p,ppic,dpic
ppic=12
randomize
p=Int((ppic*rnd)+1)
dpic="graphix/randompics/"&p&".gif"
% >
显示
< img src="< %=dpic% >" >

5.如何回到先前的页面
答:< a href="< %=request.serverVariables("Http_REFERER")% >" >preivous page< /a >
或用图片如:< img src="arrowback.gif" alt="< %=request.serverVariables("HTTP_REFERER")% >" >

6.如何确定对方的IP地址
答:< %=Request.serverVariables("REMOTE_ADDR)% >

7.如何链结到一副图片上
答:< % @Languages=vbs cript % >
< % response.expires=0
strimagename="graphix/errors/erroriamge.gif"
response.redirect(strimagename)
% >

8.强迫输入密码对话框
答:把这句话放载页面的开头
< % response.status="401 not Authorized"
response.end
% >

9.如何传递变量从一页到另一页
答:用 HIDDEN 类型来传递变量
< % form method="post" action="mynextpage.asp" >
< % for each item in request.form % >
< input namee="< %=item% >" type="HIDDEN"
value="< %=server.HTMLEncode(Request.form(item)) % >" >
< % next % >
< /form >

10.为何我在 asp 程序内使用 msgbox,程序出错说没有权限
答:由于 asp 是服务器运行的,如果可以在服务器显示一个对话框,那么你只好等有人按了确定之后,你的程序才能继续执行,而一般服务器不会有人守着,所以微软不得不禁止这个函数,并胡乱告诉你 (:) 呵呵) 没有权限。但是ASP和客户端脚本结合倒可以显示一个对话框,as follows:
< % yourVar="测试对话框"% >
< % s cript language='javas cript' >
alert("< %=yourvar% >")
< /s cript >

11.有没有办法保护自己的源代码,不给人看到
答:可以去下载一个微软的Windows s cript Encoder,它可以对asp的脚本和客户端javas cript/vbs cript脚本进行加密。。。不过客户端加密后,只有ie5才能执行,服务器端脚本加密后,只有服务器上安装有s cript engine 5(装一个ie5就有了)才能执行。

12.怎样才能将 query string 从一个 asp 文件传送到另一个?
答:前者文件加入下句: Response.Redirect("second.asp?" & Request.ServerVariables("QUERY_STRING"))

13.global.asa文件总是不起作用?
答:只有web目录设置为web application, global.asa才有效,并且一个web application的根目录下 global.asa才有效。IIS4可以使用Internet Service Manager设置application setting 怎样才能使得htm文件如同asp文件一样可以执行脚本代码?

14.怎样才能使得htm文件如同asp文件一样可以执行脚本代码?
答:Internet Sevices Manager - > 选择default web site - >右鼠键- >菜单属性-〉主目录- > 应用程序设置(Application Setting)- > 点击按钮 "配置"- > app mapping - >点击按钮"Add" - > executable browse选择 \WINNT\SYSTEM32\INETSRV\ASP.DLL EXTENSION 输入 htm method exclusions 输入PUT.DELETE 全部确定即可。但是值得注意的是这样对htm也要由asp.dll处理,效率将降低。

15.如何注册组件

答:有两种方法。
第一种方法:手工注册 DLL 这种方法从IIs 3.0一直使用到IIs 4.0和其它的Web Server。它需要你在命令行方式下来执行,进入到包含有DLL的目录,并输入:regsvr32 component_name.dll 例如 c:\temp\regsvr32 AspEmail.dll 它会把dll的特定信息注册入服务器中的注册表中。然后这个组件就可以在服务器上使用了,但是这个方法有一个缺陷。当使用这种方法注册完毕组件后,该组件必须要相应的设置NT的匿名帐号有权限执行这个dll。特别是一些组件需要读取注册表,所以,这个注册组件的方法仅仅是使用在服务器上没有MTS的情况下,要取消注册这个dll,使用:regsvr32 /u aspobject.dll example c:\temp\regsvr32 /u aneiodbc.dll

第二种方法:使用MTS(Microsoft Transaction Server) MTS是IIS 4新增特色,但是它提供了巨大的改进。MTS允许你指定只有有特权的用户才能够访问组件,大大提高了网站服务器上的安全性设置。在MTS上注册组件的步骤如下:
1) 打开IIS管理控制台。
2) 展开transaction server,右键单击"pkgs installed"然后选择"new package"。
3) 单击"create an empty package"。
4) 给该包命名。
5) 指定administrator帐号或则使用"interactive"(如果服务器经常是使用administrator 登陆的话)。
6) 现在使用右键单击你刚建立的那个包下面展开后的"components"。选择 "new then component"。
7) 选择 "install new component" 。
8) 找到你的.dll文件然后选择next到完成。
要删除这个对象,只要选择它的图标,然后选择delete。
附注:特别要注意第二种方法,它是用来调试自己编写组件的最好方法,而不必每次都需要重新启动机器了。

16. ASP与Access数据库连接:

<%@ language=VBs cript%>
<%
dim conn,mdbfile
mdbfile=server.mappath("数据库名称.mdb")
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=数据库密码;dbq="&mdbfile

%>

17. ASP与SQL数据库连接:

<%@ language=VBs cript%>
<%
dim conn
set conn=server.createobject("ADODB.connection")
con.open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL服务器名称或IP地址;UID=sa;PWD=数据库密码;DATABASE=数据库名称
%>

建立记录集对象:

set rs=server.createobject("adodb.recordset")
rs.open SQL语句,conn,3,2

18. SQL常用命令使用方法: 

(1) 数据记录筛选: 

sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]" 

sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]" 

sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]" 

sql="select * from 数据表 where 字段名 in ('值1','值2','值3')" 

sql="select * from 数据表 where 字段名 between 值1 and 值2" 

(2) 更新数据记录: 

sql="update 数据表 set 字段名=字段值 where 条件表达式" 

sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式" 

(3) 删除数据记录: 

sql="delete from 数据表 where 条件表达式" 

sql="delete from 数据表" (将数据表所有记录删除) 

(4) 添加数据记录: 

sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)" 

sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表) 

(5) 数据记录统计函数: 

AVG(字段名) 得出一个表格栏平均值 
COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计 
MAX(字段名) 取得一个表格栏最大的值 
MIN(字段名) 取得一个表格栏最小的值 
SUM(字段名) 把数据栏的值相加 

引用以上函数的方法: 

sql="select sum(字段名) as 别名 from 数据表 where 条件表达式" 
set rs=conn.excute(sql) 

用 rs("别名") 获取统的计值,其它函数运用同上。 

(5) 数据表的建立和删除: 

CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… ) 

例:CREATE TABLE tab01(name varchar(50),datetime default now()) 

DROP TABLE 数据表名称 (永久性删除一个数据表) 

19. 记录集对象的方法: 

rs.movenext 将记录指针从当前的位置向下移一行 
rs.moveprevious 将记录指针从当前的位置向上移一行 
rs.movefirst 将记录指针移到数据表第一行 
rs.movelast 将记录指针移到数据表最后一行 
rs.absoluteposition=N 将记录指针移到数据表第N行 
rs.absolutepage=N 将记录指针移到第N页的第一行 
rs.pagesize=N 设置每页为N条记录 
rs.pagecount 根据 pagesize 的设置返回总页数 
rs.recordcount 返回记录总数 
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否 
rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否 
rs.delete 删除当前记录,但记录指针不会向下移动 
rs.addnew 添加记录到数据表末端 
rs.update 更新数据表记录 

--------------------------------------- 

20 Recordset对象方法 

Open方法 

recordset.Open Source,ActiveConnection,CursorType,LockType,Options 

Source 
Recordset对象可以通过Source属性来连接Command对象。Source参数可以是一个Command对象名称、一段SQL命令、一个指定的数据表名称或是一个Stored Procedure。假如省略这个参数,系统则采用Recordset对象的Source属性。 

ActiveConnection 
Recordset对象可以通过ActiveConnection属性来连接Connection对象。这里的ActiveConnection可以是一个Connection对象或是一串包含数据库连接信息(ConnectionString)的字符串参数。 

CursorType 
Recordset对象Open方法的CursorType参数表示将以什么样的游标类型启动数据,包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下: 
-------------------------------------------------------------- 
常数 常数值 说明 
------------------------------------------------------------- 
adOpenForwardOnly 0 缺省值,启动一个只能向前移动的游标(Forward Only)。 
adOpenKeyset 1 启动一个Keyset类型的游标。 
adOpenDynamic 2 启动一个Dynamic类型的游标。 
adOpenStatic 3 启动一个Static类型的游标。 
------------------------------------------------------------- 
以上几个游标类型将直接影响到Recordset对象所有的属性和方法,以下列表说明他们之间的区别。 

------------------------------------------------------------- 
Recordset属性 adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic 
------------------------------------------------------------- 
AbsolutePage 不支持 不支持 可读写 可读写 
AbsolutePosition 不支持 不支持 可读写 可读写 
ActiveConnection 可读写 可读写 可读写 可读写 
BOF 只读 只读 只读 只读 
Bookmark 不支持 不支持 可读写 可读写 
CacheSize 可读写 可读写 可读写 可读写 
CursorLocation 可读写 可读写 可读写 可读写 
CursorType 可读写 可读写 可读写 可读写 
EditMode 只读 只读 只读 只读 
EOF 只读 只读 只读 只读 
Filter 可读写 可读写 可读写 可读写 
LockType 可读写 可读写 可读写 可读写 
MarshalOptions 可读写 可读写 可读写 可读写 
MaxRecords 可读写 可读写 可读写 可读写 
PageCount 不支持 不支持 只读 只读 
PageSize 可读写 可读写 可读写 可读写 
RecordCount 不支持 不支持 只读 只读 
Source 可读写 可读写 可读写 可读写 
State 只读 只读 只读 只读 
Status 只读 只读 只读 只读 
AddNew 支持 支持 支持 支持 
CancelBatch 支持 支持 支持 支持 
CancelUpdate 支持 支持 支持 支持 
Clone 不支持 不支持 
Close 支持 支持 支持 支持 
Delete 支持 支持 支持 支持 
GetRows 支持 支持 支持 支持 
Move 不支持 支持 支持 支持 
MoveFirst 支持 支持 支持 支持 
MoveLast 不支持 支持 支持 支持 
MoveNext 支持 支持 支持 支持 
MovePrevious 不支持 支持 支持 支持 
NextRecordset 支持 支持 支持 支持 
Open 支持 支持 支持 支持 
Requery 支持 支持 支持 支持 
Resync 不支持 不支持 支持 支持 
Supports 支持 支持 支持 支持 
Update 支持 支持 支持 支持 
UpdateBatch 支持 支持 支持 支持 
-------------------------------------------------------------- 
其中NextRecordset方法并不适用于Microsoft Access数据库。 

LockType 
Recordset对象Open方法的LockType参数表示要采用的Lock类型,如果忽略这个参数,那么系统会以Recordset对象的LockType属性为预设值。LockType参数包含adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下: 

------------------------------------------------------------- 
常数 常数值 说明 
-------------------------------------------------------------- 
adLockReadOnly 1 缺省值,Recordset对象以只读方式启动,无法运行AddNew、Update及Delete等方法 
adLockPrssimistic 2 当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性。 
adLockOptimistic 3 当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作。 
adLockBatchOptimistic 4 当数据源正在更新时,其他用户必须将CursorLocation属性改为adUdeClientBatch才能对数据进行增、 
删、改的操作。

10:02 | 评论 (1)

2005年6月1日 #

使用SELECT的一个小错误

若要使用SELECT A 别名1,B 别名2 。。。。FROM XXX

应该在别名上加“”,如 select a “a1”, b “b1” from sssss

这样别名里就可以有特殊字符了,比如括号“()”之类的,如果不加“”,不含特殊字符的汉字也可以通过,但是包括<()这样的字符就不行可,不知道为什么,谁知道么?

21:51 | 评论 (0)

DataGrid点击删除按钮弹出确认对话框一个好办法

datagrid-》属性生成器-》列-》添加按钮列-》删除-》文本(T)->在文本框里加上:
<div id="de" onclick="JavaScript:return confirm('确定删除吗?')">删除</div>

21:50 | 评论 (1)

ASP.NET中DataGrid控件应用技巧简述

一.概述:

  运用ASP.NET开发Web应用程序过程中,DataGrid是一个非常重要的控件,几乎任何和数据相关的表现都要用到该控件。所以熟练掌握DataGrid控件的应用技巧是每个Web开发人员所必备的基本能力。

  DataGrid控件能以表格的方式显示数据源中的数据,并提供了诸如分页、排序以及过滤等一些强大的内置功能,所以它能大大简化Web应用程序的开发过程。同时,开发者还可以通过运用各种不同的数据绑定列来自定义DataGrid控件显示数据的方式,这样就大大增强了DataGrid控件的功能。本文我就将向大家介绍如何运用其中的TemplateColumn、EditCommandColumn、HyperlinkColumn、ButtonColumn以及BoundColumn等来自定义DataGrid控件显示数据的方式。

  二.BoundColumn数据列的应用:

  一般地,我们运用DataGrid控件开发数据驱动的Web应用程序时会以一行显示数据源中的某一条记录,而其中的一列则显示某个特定的字段值。DataGrid控件本身为我们提供了强大的功能,所以我们只需要以很少的代码便可以实现数据的显示功能。不过,这样也带来了一个问题,那就是我们如何来个性化显示数据的方式呢?显然DataList控件和Repeater控件在这个方面要强于DataGrid控件,不过如果我们放弃了DataGrid控件也就相当于放弃了其具有的强大功能。那么,我们如何运用DataGrid控件也来实现数据显示的自定义功能呢?首先,我们得把DataGrid控件根据数据源自动产生数据绑定列的功能关掉,方法很简单,就是将其AutoGenerateColumns属性设置为False即可。下面是这种方法的一个示例:

<asp:DataGrid runat= "server"id="myDataGrid" AutoGenerateColumns="False">
</asp:DataGrid>

  一旦其AutoGenerateColumns属性为False值,我们就得编程实现数据列的绑定了。在绑定数据列过程中,我们可以运用上面介绍的五中数据列中的任何一种,不过任何数据列都必须在<Columns></Columns>标记内被定义,这个标记能表明被定义的对象是一种数据列。

  下面我们首先来介绍BoundColumn数据列的应用。通过运用BoundColumn数据列,我们能根据自己的需求来动态地将数据源中的数据绑定到特定的数据列上并修改数据列的外观,比如我们可以更改各个列显示的次序、使DataGrid控件只显示某些字段的值而非全部字段的值、更改数据列的标题等等。BoundColumn数据列能设定DataField、DataFormatString、FooterText、HeaderText、HeaderImageUrl以及SortField等属性,而正是这些使得DataGrid控件的外观变得千变万化、多姿多彩。

  下面,我们来建立一个示例性的Web应用程序项目,该项目运用到了DataGrid控件,并且显示了如何在其中运用BoundColumn数据列来自定义数据的显示方式。下面是本项目的主要文件以及其代码后置文件的内容:

  WebForm1.aspx:

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="DataGridTemplates.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<asp:DataGrid runat="server" id="myDataGrid" AutoGenerateColumns="False" BorderWidth="1px" Font-Names="Verdana,Arial,sans-serif" Font-Size="12px" BorderColor="#404040" GridLines="Horizontal" CellPadding="4">
<AlternatingItemStyle BackColor="#E0E0E0"></AlternatingItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="Teal"></HeaderStyle>
<Columns>
<asp:BoundColumn DataField="CustomerID" HeaderText="ID"></asp:BoundColumn>
<asp:BoundColumn DataField="CompanyName" HeaderText="Company Name"></asp:BoundColumn>
<asp:BoundColumn DataField="ContactName" HeaderText="Contact Name"></asp:BoundColumn>
<asp:BoundColumn DataField="Address" HeaderText="Address"></asp:BoundColumn>
<asp:BoundColumn DataField="City" HeaderText="City"></asp:BoundColumn>
<asp:BoundColumn DataField="Region" HeaderText="Region"></asp:BoundColumn>
<asp:BoundColumn DataField="PostalCode" HeaderText="Postal Code">
<HeaderStyle Wrap="False"></HeaderStyle>
</asp:BoundColumn>
</Columns>
</asp:DataGrid>
</form>
</body>
</HTML>

WebForm1.aspx.cs:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace DataGridTemplates
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid myDataGrid;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if( !Page.IsPostBack )
BindData();
}

private void BindData()
{
SqlConnection con = new SqlConnection( "server=localhost;database=Northwind;integrated security=true;" );
SqlCommand cmd = new SqlCommand( "SELECT * FROM Customers", con );

try
{
con.Open();
myDataGrid.DataSource = cmd.ExecuteReader();
myDataGrid.DataBind();
con.Close();
}
catch( Exception ) {}
if( con != null && con.State == ConnectionState.Open )
con.Close();
}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}

  项目创建完毕,在浏览器中运行的效果如图1所示:


图1 DataGrid控件中运用BoundColumn数据列显示数据的效果。

三.HyperlinkColumn数据列以及ButtonColumn数据列的应用:

  上面我向大家介绍了BoundColumn数据列的应用,而其它的两种数据列:HyperlinkColumn数据列以及ButtonColumn数据列的应用方式与之相差无几。

  HyperlinkColumn数据列包含了DataTextField属性以及DataNavigateUrlField属性等,前者可以用于指定要显示的文本内容,而后者则用于指定超链接。同时HyperlinkColumn数据列还包含了一个可用于指定文本显示格式的DataNavigateUrlFormatString属性。

  像HyperlinkColumn数据列那样ButtonColumn数据列也提供了DataTextField属性以及DataTextFormatString属性。同时它还提供了一个CommandName属性,该属性能指定按钮被点击时服务器端的响应动作。而此时DataGrid控件的OnItemCommand属性必须指向一个相应的方法,该方法在按钮被点击时会自动被调用。DataGrid控件中的一行可以包含多个ButtonColumn数据列,每个数据列中的按钮消息响应函数都是OnItemCommand属性所对应的方法,而不同的按钮是根据其CommandName属性来区分函数所应执行的不同部分的。ButtonColumn数据列还提供了一个ButtonType属性以指定按钮的外观,该属性包括两种可取值:LinkButton(默认)和PushButton。

  下面我们在原来解决方案的基础上再添加一个新的Web应用程序项目,并在其中运用DataGrid控件的BoundColumn数据列、HyperlinkColumn数据列以及ButtonColumn数据列。下面是本项目的主要文件以及其代码后置文件的内容:

  WebForm1.aspx:

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="DataGridTemplates2.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="FlowLayout">
<form id="Form1" method="post" runat="server">
<asp:DataGrid id="myDataGrid" runat="server" HeaderStyle-Font-Bold="True" Cellpadding="4" BorderWidth="1px" AutoGenerateColumns="False" GridLines="Horizontal" Font-Names="Verdana,Arial,sans-serif" Font-Size="12px" BorderStyle="Solid">
<AlternatingItemStyle BackColor="#EFEFEF"></AlternatingItemStyle>
<ItemStyle Font-Size="X-Small"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="Teal"></HeaderStyle>
<Columns>
<asp:BoundColumn DataField="CustomerID" HeaderText="ID"></asp:BoundColumn>
<asp:HyperLinkColumn DataNavigateUrlField="Url" DataTextField="CompanyName" HeaderText="Comapny Name"></asp:HyperLinkColumn>
<asp:ButtonColumn Text="Get Details" ButtonType="PushButton" CommandName="GetDetails"></asp:ButtonColumn>
</Columns>
</asp:DataGrid>
</form>
</body>
</HTML>

WebForm1.aspx.cs:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace DataGridTemplates2
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid myDataGrid;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if( !Page.IsPostBack )
BindData();
}

private void BindData()
{
SqlConnection con = new SqlConnection( "server=localhost;integrated security=true;database=Northwind" );
SqlCommand cmd = new SqlCommand( "SELECT *, 'http://www.' + CustomerID + '.com' As Url FROM Customers", con );
try
{
con.Open();
myDataGrid.DataSource = cmd.ExecuteReader();
myDataGrid.DataBind();
con.Close();
}
catch( Exception ) {}
if( con != null && con.State == ConnectionState.Open )
con.Close();
}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.myDataGrid.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.myDataGrid_ItemCommand);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion

private void myDataGrid_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if( e.CommandName == "GetDetails" )
Response.Redirect( "WebForm2.aspx?id=" + e.Item.Cells[0].Text );
}
}
}

  项目创建完毕,在浏览器中运行的效果如图2所示:


图2 DataGrid控件中运用HyperlinkColumn以及ButtonColumn数据列显示数据的效果。

四.TemplateColumn数据列的应用:

  DataGrid控件中的TemplateColumn数据列可以说是功能极其强大的,灵活地运用它就能使得DataGrid控件显示数据的方式变得多种多样。TemplateColumn数据列主要为我们提供了以下四种数据列模板:

  ·HeaderTemplate
  ·ItemTemplate
  ·EditItemTemplate
  ·FooterTemplate

  其中HeaderTemplate是用于显示DataGrid控件的首行中的文本、图片或是绑定数据的。FooterTemplate的功能与HeaderTemplate的功能类似,不过它是用于显示尾行中的内容的。EditItemTemplate是应用于具有编辑功能的数据列的,任何运用了该模板的数据列的数据能被用户编辑并在适当时候更新到数据源中。

  ItemTemplate允许你建立具有完全自定义数据显示方式的数据列。通过运用<%# Container.DataItem("[FieldName]") %>或<%# DataBinder.Eval(Container.DataItem, "[FieldName]", "{0:[FormatString]}") %>两种数据绑定语法你就可以将数据源中的某列数据绑定到相应的数据列中并赋予完全自定义的显示方式。

  下面我们在第三步中建立的Web应用程序中添加一个新的Web页面-WebForm2,该页面能显示公司的详细信息,也就是在图2中的按钮被点击时浏览器会导向到的页面。它能根据用户的选择显示相应公司的详细信息,方法就是判断Request.QueryString内的信息。如果其中包含了一个"id"名/值对,则根据其中的值选择相对应的公司信息并显示在页面中,如果没有包含任何"id"值的信息则从数据表中选取所有公司的信息并显示在页面中。同时还要指出的是,在一个DataGrid控件中你可以将多种类型的数据列结合起来一起使用,并根据不同的需要选择合适的数据列显示相应的数据。下面是本页面的HTML文件以及其代码后置文件的内容:

  WebForm2.aspx:

<%@ Page language="c#" Codebehind="WebForm2.aspx.cs" AutoEventWireup="false" Inherits="DataGridTemplates2.WebForm2" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm2</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="FlowLayout">
<form id="Form1" method="post" runat="server">
<asp:datagrid id="myDataGrid" runat="server" ItemStyle-Font-Size="x-small" HeaderStyle-Font-Bold="True" HeaderStyle-Font-Size="x-small" AlternatingItemStyle-BackColor="#EFEFEF" Cellpadding="4" BorderWidth="1" AutoGenerateColumns="False" BorderStyle="Solid" GridLines="Horizontal" BorderColor="#404040" Font-Names="Verdana,Arial,sans-serif" Font-Size="11px">
<AlternatingItemStyle BackColor="#E0E0E0"></AlternatingItemStyle>
<ItemStyle Font-Size="X-Small"></ItemStyle>
<HeaderStyle Font-Size="X-Small" Font-Bold="True" ForeColor="White" BackColor="Teal"></HeaderStyle>
<Columns>
<asp:TemplateColumn>
<HeaderTemplate>
<b>Company Detail</b>
</HeaderTemplate>
<ItemTemplate>
<table border="0" Cellpadding="4" Cellspacing="0" Width="100%" style="FONT-SIZE: 11px; FONT-FAMILY: Verdana, Arial, sans-serif">
<tr>
<td colspan="4">
<b>
<%# DataBinder.Eval( Container.DataItem, "CompanyName" ) %>
</b>
</td>
</tr>
<tr>
<td width="25%" valign="top"><b>Contact:</b></td>
<td width="25%" valign="top" nowrap>
<%# DataBinder.Eval( Container.DataItem, "ContactName" ) %>
</td>
<td width="25%" valign="top"><b>Phone:</b></td>
<td width="25%" valign="top" nowrap>
<%# DataBinder.Eval( Container.DataItem, "Phone" ) %>
</td>
</tr>
<tr>
<td width="25%" valign="top"><b>Title:</b></td>
<td width="25%" valign="top">
<%# DataBinder.Eval( Container.DataItem, "ContactTitle" ) %>
</td>
<td width="25%" valign="top"><b>Fax:</b></td>
<td width="25%" valign="top" nowrap>
<%# DataBinder.Eval( Container.DataItem, "Fax" ) %>
</td>
</tr>
<tr>
<td width="25%" valign="top"><b>Address:</b></td>
<td width="25%" valign="top" colspan="3">
<%# DataBinder.Eval( Container.DataItem, "Address" ) %>
<br>
<%# DataBinder.Eval( Container.DataItem, "City" ) %>
,
<%# DataBinder.Eval( Container.DataItem, "Region" ) %>
<%# DataBinder.Eval( Container.DataItem, "PostalCode" ) %>
<br>
<%# DataBinder.Eval( Container.DataItem, "Country" ) %>
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
</form>
</body>
</HTML>

WebForm2.aspx.cs:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace DataGridTemplates2
{
/// <summary>
/// WebForm2 的摘要说明。
/// </summary>
public class WebForm2 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid myDataGrid;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if( !Page.IsPostBack )
BindData();
}

private void BindData()
{
DataSet ds = new DataSet();
SqlDataAdapter da;
String strSQL;

if( Request.QueryString["id"] == null )
strSQL = "SELECT * FROM Customers";
else
strSQL = "SELECT * FROM Customers WHERE CustomerID = '" + Request.QueryString["id"].ToString() + "'";

da = new SqlDataAdapter( strSQL, "server=localhost;integrated security=true;database=Northwind" );
da.Fill( ds, "Customers" );
myDataGrid.DataSource = ds.Tables["Customers"].DefaultView;
myDataGrid.DataBind();
}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}

  新页面创建完毕,在浏览器中运行的效果如图3所示:


图3 DataGrid控件中运用TemplateColumn数据列显示数据的效果。

  五.总结:

  到此为止,我想大家已经基本掌握了在Web应用程序中运用DataGrid控件自定义数据显示的方法了。相比于DataList控件和Repeater控件,DataGrid控件具有更多强大的功能,而且其自定义数据显示的功能也不弱。所以只要你好好掌握其中的技巧和方法,运用DataGrid控件也同样可以使得你的Web应用程序不仅具有强大的数据处理功能,而且非常富有个性。

17:15 | 评论 (0)

Asp.Net中DataGrid的模版列(TemplateColumn)内容控制简单方法

最近写了几个asp.net的项目。其中,Asp.Net的控件DataGrid使用的最多了,前几天需要一个功能,我研究了很长时间,发现一个方法,应该是最简单的实现。现表述如下。

DataGrid的html定义很简单,如下 <Asp:DataGrid ID="myDatagrid" runat="server" datakeyfield="fID" AutoGenerateColumns="False">
<Columns>
<Asp:TemplateColumn itemstyle-width=".." ..>
<ItemTemplate>
.
</ItemTemplate>
</Asp:TemplateColumn>
</Columns>
</Asp:DataGrid>
功能的要求是在 ItemTemplate中,有可能是一个绑定数据源的:
<a href="...">...</a>
链接代码,也有可能是一个
<span>...</span>
显示文本代码,而判断的根据是绑定到DataGrid中数据源的DataTable中每行的某一特定列的内容。

说白了,功能就是DataGrid在绑定数据生成行的时候,判断数据源DataTable每行DataRow中一个字段的内容,这个字段类型是bool类型,如果为true,则这个列显示的是<a href="...">...</a>链接,而如果是false,则显示<span>...</span>文本。而显示的链接内指向的地址必须执行数据绑定。就是这个DataGrid的列有的行要数据绑定,有的行不要数据绑定。

功能需求分析到这里,那么现在该思考如何实现了。

我当时了解需求后,马上反应出来,使用DataGrid自带的BoundColumn、HyperLinkColumn肯定是不行的。而且,使用TemplateColumn也有麻烦。他只能放一些固定的控件,如html控件或服务器控件等。后来我没有办法了,准备继承ITemplate接口自己开发一个模版列。后来又觉得麻烦。因为绑定的时候需要一个类似于BoundColumn功能的绑定数据源内容的东西。后来我发现了这个方法。

在查看.Net Framework SDK 文档的时候,我发现在<Asp:TemplateColumn>中的<ItemTemplate>中可以放类似于
<%# DataBinder.Eval(Container.DataItem, "fID") %> 这样的数据绑定代码,我就想是否可以再加入代码呢

我做了一个试验,试验结果发现上面的代码(包括前面和后面的<% %>符号)输出的实际上是一个object对象,然后DataGrid显示的时候把它转换成字符串。后来我就想,是否可以前面再加入代码,调用这个页面的后台代码中的方法。

我们都知道,在asp.net1.1中,一个名称为aaa.aspx的asp.net页在asp.net内部处理时是一个名叫ASP.aaa_aspx的类,这个类继承它的后台代码aaa.aspx.cs中的类,这个类继承System.Web.UI.Page类,从而实现需要的功能。这就是说,在asp.net 1.1中,我们在.aspx中的以<% %> 包含的代码可以调用后台cs类中的以public 和protected生命的任何方法。

这就好办了,既然从上面的数据绑定代码可以获取主键内容(是个字符串),那么我可以在后台写一个方法,这个方法有一个字符串参数,返回的也是字符串。这个返回的字符串就是显示在列中的内容。

首先说一下绑定表的内容,如下

列名 类型 用途
fID System.String 表主键
hasSub System.Boolean 判断的依据
contentUrl System.String 链接的地址

然后是后台代码中C#代码
protected string GetDGColumn(string id)
{
// 从数据源获取DataTable内容略
DataTable dt = .;
// 定义DataTable的主键列
DataColumn[] key = {dt.Columns["fID"]};
dt.PrimaryKey = key;

// 根据传入的id开始找数据行
DataRow row = dt.Rows.Find(id);

// 找到后开始判断
if((bool)row["hasSub"])
{
// hasSub为 true,表示返回<span>
return "<span style=\"\">内容内容</span>";
}
else
{
// hasSub列为false,返回链接
return "<a href=\"XXXX.aspx?id="+id+"\" target=\"_blank\">链接内容</a>";
}
}

然后在.aspx中的DaaGrid内这样定义:
<Asp:DataGrid ID="myDatagrid" runat="server" datakeyfield="fID" AutoGenerateColumns="False">
<Columns>
<Asp:TemplateColumn itemstyle-width=".." ..>
<ItemTemplate>
<%# base.GetDGColumn((object)DataBinder.Eval(Container.DataItem, "fID")) %>
</ItemTemplate>
</Asp:TemplateColumn>
</Columns>
</Asp:DataGrid>

利用了DataGrid绑定时内部使用的数据绑定方法获取结果,然后把结果传递给GetDGColumn()方法,DataGrid列的内容实际上是使用的这个方法返回的字符串

17:10 | 评论 (0)

2005年5月17日 #

ASP.NET中的FILE对象总结

在ASP.NET中引入了名字空间,其中文件操作对应的名字空间是System.IO。名字空间和动态链接库有些类似,但是名字空间在整个.net系统中都可以应用。在ASP.NET的页面中可以使用<%@import namespace=...%>来引用名字空间。在vb6中采用fso对文件进行操作,在asp.net中的文件对象和fso很相似。

这里我介绍一下file对象:file对象的作用主要是创建文件流对象。通过file对象可以对系统文件进行全面的管理,可以创建、复制、删除、移动和打开文件

下面我门首先创建一个file对象。

在asp.net中,可以使用2种方法来创建一个file对象。

(1)使用dim 语句来创建一个file对象
  dim mikecatfile as file
  mikecatfile.create("c:\mikecat.txt")

(2)使用new语句来创建file对象
dim mikecatfile as new file("c:\mikecat.txt")

也可以这样定义
dim mikecatfile as file
mikecatfile=new file("c:\mikecat.txt")

大家请注意asp.net中用到vb语法在进行对象赋值时不再需要使用set语句

file对象的主要属性

在对file对象进行文件的读写操作时,只要使用2个属性:lengthname分别为文件的长度和文件名字。

file对象的主要方法

file对象有9个常用的方法

(1)create方法   该方法用于创建一个新文件
  function create(string) as filestream
   其中string为所需要创建的文件的路径,返回filestream对象,此对象为文件的读写提供通道  

(2)delete方法   该方法用于删除一个已经存在的文件
  sub delete (string)
  或者sub delete()
  如果file对象包含有文件参数,可以使用第二种方法删除文件。否则只能用第一种方法来删除文件,string参数指定所要删除的文件路径。

(3)copy方法
  该方法用于将一个文件复制到一个新文件
  sub copy(source,destination)
  source指定源文件的路径,destination指定目的文件的路径。copy方法只允许复制一个已经存在的文件到一个新文件,不允许覆盖一个已经存在的文件。

(4)createtext方法
  该方法用于创建一个新文件,该文件可以进行写操作。
  function createtext(string) as streamwriter
或者function createtext() as streamwriter
返回值为streamwriter对象用于执行对文件的写操作
和create方法不一样的是,createtext方法返回的不是filestream对象,而是streamwriter对象。

(5)fileexists方法
  该方法用于检查指定文件是否存在
  function fileexits(string) as boolean
  string 指定所要查找的文件路径,如果该文件存在,返回值为true,否则为false
(6)getextension方法
该方法用于得到文件的扩展名
function getextension(string) as string
如果指定的文件有扩展名,则返回扩展名字符串,该字符串也包含"."
如果指定的文件不包含有扩展名,如string参数指定的是某个文件夹的路径,则返回empty

(7)move方法
  该方法用于把一个已经存在的文件移动到一个新的文件夹下。
  sub move(source,destination)
  source 指定源文件的路径,destination指定目的文件的路径,和copy方法不同的是使用move方法后源文件被删除了。

(8)open方法
  function open(filename,filemode,fileaccess) as filestream
  该方法返回的是文件操作通道对象filestream。
  filemode和fileaccess在system.io名字空间里各自定义了一组枚举常量,用于指定文件操作模式和操作权限。
  filemode.append  以追加的方式打开文件,或者以追加的方式创建一个新的文件。使用这种模式操作文件时,必须和fileaccess.write一起使用,就是说必须有写入权限
  filemode.create 创建一个新文件,如果存在同名的文件,将覆盖原文件
  filemode.createnew 创建一个新文件,如果有同名文件,打开文件出错
  filemode.open  打开一个已经存在的文件
  filemode.openorcreate  打开一个已经存在文件,如果该文件不存在则创建一个新文件。
  filemode.truncate 当文件打开时清空文件的所有内容,如果使用这个属性对文件至少要有写入的权限

  fileaccess.read 打开的文件只有读取的权限
  fileaccess.write 打开的文件只有写入的权限
  fileaccess.readwrite 打开的文件既可以写入也可以读取

(9)opentext方法
  该方法用来创建一个streamreader对象并对已经存在的文件进行读取操作。
  function opentext(string) as streamreader
  或者function opentext() as streamreader
和open方法不一样的是,opentext返回的是streamreader对象,此对象用于执行对文件的读操作.

9:57 | 评论 (0)

2005年5月16日 #

ASP.net中随机数应用实例

大家可能都用过Chinaren的校友录,不久前它的留言簿上加了一个防止灌水的方法,就是系统每次产生一个由随机的数字和字母组成的图片,每次留言必须正确地输入这些随机产生的字符,否则不能添加留言。这是一个很好的防止恶意攻击的方法,其核心的技术就是如何产生随机数。Chinaren网站是使用PHP实现的,而我们可以充分利用ASP.net的强大功能很轻易地实现。

在.net Framework中提供了一个专门用来产生随机数的类System.Random,使用这个类时必须导入System命名空间。当然,命名空间System在每个ASP.net页面中都是自动导入的,所以我们可以直接使用这个类。

对于随机数,大家都知道,计算机不可能产生完全随机的数字,所谓的随机数发生器都是通过一定的算法对事先选定的随机种子做复杂的运算,用产生的结果来近似的模拟完全随机数,这种随机数被称作伪随机数。伪随机数是以相同的概率从一组有限的数字中选取的。所选数字并不具有完全的随机性,但是从实用的角度而言,其随机程度已足够了。伪随机数的选择是从随机种子开始的,所以为了保证每次得到的伪随机数都足够地“随机”,随机种子的选择就显得非常重要。如果随机种子一样,那么同一个随机数发生器产生的随机数也会一样。一般地,我们使用同系统时间有关的参数作为随机种子,这也是.net Framework中的随机数发生器默认采用的方法。

我们可以使用两种方式初始化一个随机数发生器:

第一种方法不指定随机种子,系统自动选取当前时间作为随机种子:

Random ro = new Random();

第二种方法可以指定一个int型参数作为随机种子:


int iSeed=10;

Random ro = new Random(10);

之后,我们就可以使用这个Random类的对象来产生随机数,这时候要用到Random.Next()方法。这个方法使用相当灵活,你甚至可以指定产生的随机数的上下限。

不指定上下限的使用如下:

int iResult;

iResult=ro.Next();

下面的代码指定返回小于100的随机数:

int iResult;

int iUp=100;

iResult=ro.Next(iUp);

而下面这段代码则指定返回值必须在50-100的范围之内:


i

抱歉!评论已关闭.