0引言Web应用程序和用户进行交互时,按钮主要用于提交数据及响应事件,在这个过程中,按钮控件是非常必要的,它是组成交互式动态网页的最基本元素之一.
通过它可以方便地将客户端的数据传给服务器,并且在程序中触发事件,执行相应的事件过程,从而完成相关的操作.
在ASP.
NET中,通过使用Button控件在网页上既可创建"提交"按钮,也可以创建"命令"按钮.
这两种按钮的主要区别在于"提交"按钮不支持CommandName(命令名称)和Com-mandArgument(命令参数)两个属性.
默认情况下,直接创建的Button控件是"提交"按钮.
在没有指定单击事件前,它只是将网页中的对象回发到服务器.
可以为其指定Click事件,以便以编程方式控制在用户单击"提交"按钮时执行事件过程.
如果要创建"命令"按钮,只需为Button控件指定CommandName和CommandArgument两个属性的值.
"命令"按钮可以响应Command事件,通过事件处理程序,以便以编程方式控制在用户单击"命令"按钮时执行的操作.
除了提交数据和响应Command事件之外,更重要的是"命令"按钮具有与之关联的命令名CommandName和命令参数CommandArgument,它可使用户在一个网页上创建多个Button控件,并以编程方式确定单击了哪个Button控件,从而使这些控件能够响应相同的事件.
此外还可以将CommandArgu-ment属性与命令按钮一起使用,提供有关要执行的命令的附加信息.
1CommandName和CommandArgument的主要功能"命令"按钮的优点就在于提交程序和响应事件的同时能够传递参数.
传递参数必须通过CommandName与CommandArgument属性来完成.
CommandName用来给出或设置Button控件的命令名称,是引发事件的源的命令,相当于text.
CommandArgument用来给出或设置Button控件的命令参数,是引发事件的源的命令参数,相当于value值.
这两个值为只读的,需要在设计阶段指定,在程序中不能动态修改.
CommandName属性和CommandArgument属性有着非常重要的作用.
例如:假如一个页面中有100个按钮,在需要在服务器端需要判断到底是哪个按钮被单击.
如果没有这二个属性,必须检测每个按扭,用一一列举的方法,给每一个按钮的Text属性或ID属性赋值,然后在程序中通过匹配Text属性值或ID属性值,来判断到底是哪个按钮被单击了.
虽然这种方法是可行的,但是很繁琐,是不可取的.
有了CommandName属性和CommandArgument属性就可以方便地解决以上问题.
首先给每个按钮的CommandName和CommandArgument属性赋不同的值,然后在按钮的OnCommand事件中,通过数据类型为CommandEventArgs的形参e来获取单击每个按钮时传递过来的CommandName和CommandArgument的值,从而判断是哪个按钮被单击了.
2在Click事件中获取CommandName和Command-Argument的值单击事件是按钮最典型的事件之一.
当单击按钮时,会同ASP.
NET按钮控件中CommandName和CommandArgument用法黄小花(江西交通职业技术学院信息工程系,江西南昌330013)摘要:在Web页面中,要判断用户单击了一组按钮中的哪个按钮,大多数情况下,可以利用命令按钮提供的CommandName和CommandArgument两个属性来完成.
这两个属性是ASP.
NET中创建命令按钮控件的两个重要属性,利用它们在程序中传递参数,通过引用参数值可,方便地在同一个事件过程确定哪个按钮被单击了.
文章主要围绕CommandName和CommandArgument用法,介绍了如何在Click事件和Command事件中获取值的方法及正确使用它们应该注意的问题.
关键词:按钮控件属性;CommandName;CommandArgument;参数传递UsageofASP.
NETButtonControlCommandNameandCommandArgumentHUANGXiao-hua(Dept.
ofInformationEngineering,JiangxiV&TCollegeofCommunication,Nanchang,Jiangxi330013,China)Abstract:InaWebpage,tojudgewhichbuttoninagroupofbuttonsisclickedbyusercanbeachievedbyusingCommandNameandCommandArgumentpropertiesprovidedbycommandbuttoninmostcases.
ThetwopropertiesareimportantforcreatingcommandbuttoncontrolinASP.
NET,theycanbeusedtopassargumentsinprogram,thenwhichbuttonisclickedcanbeeasilydeterminedthroughreferencingargumentvaluesinthesameeventprocedure.
FocusingontheusageofCommandNameandCommandArgument,howtogetthevalesfromClickandCommandevents,aswellastheproblemsthatshouldbenoticedisintroduced.
Keywords:buttoncontrolproperties;CommandName;CommandArgument;argumentpassing··36万方数据时触发Click和Command两个事件,一般会先执行Click,后执行Command.
这两个事件系统都可以获取CommandName和CommandArgument的值.
以下介绍如何在Click事件中获取值.
先看以下两段程序.
第一段程序创建一个按钮,该按钮设置了CommandName和CommandArgument属性,并且按钮产生了一个OnClick事件.
第二段程序中定义了响应OnClick事件的事件过程"Sport_Click",通过这个过程来获取CommandName和CommandArgument的值.
ProtectedSubSport_Click(ByValsenderAsObject,ByValeAsSystem.
EventArgs)Label1.
Text="你选择中的动作是"&sender.
commandname&"具体的动作目标是"&sender.
CommandArgumentEndSub在OnClick事件中,有两个形式参数:sender为对象类型Ob-ject,e为包含事件数据类的基类EventArgs.
由于EventArgs没有提供任何数据,所以不能通过形参e来获取值.
但是可以通过形参sender来获取CommandName和CommandArgument的值.
3在Command事件中获取CommandName和CommandArgument的值下面介绍在OnCommand事件中获取值.
首先通过上述第一段程序创建一个设置好了CommandName和CommandArgu-ment值的按钮,该按钮响应OnCommand事件.
在上述第二段程序中定义响应OnCommand事件的事件过程"Sport_command",通过这个过程来获取CommandName和CommandArgument的值.
ProtectedSubSport_command(ByValsenderAsObject,ByValeAsCommandEventArgs)Label1.
Text="你选择中的动作是"&e.
commandname&"具体的动作目标是"&e.
CommandArgumentEndSub在OnCommand事件中,有两个形式参数:sender仍为对象类型Object,而形参e为Command事件提供数据的CommandEventArgs类型.
所以可以直接通过参数e来获取CommandName和CommandArgument的值.
注意,这个方法使用的是CommandEventArgs,而不是常用的System.
EventArgs.
形参e获取值的方法与CommandEventArgs类密切相关.
CommandEventArgs类存储了和按钮事件相关的数据,并且可以在事件处理中通过CommandEventArgs类的属性来访问这些数据.
简单地说,当按钮被单击后,这个按钮所触发的数据都被储存到服务器的CommandEventArgs类中,这样就可以访问CommandEventArgs类中的属性.
而CommandName和CommandArgument是类CommandEventArgs的两个公共属性,所以它们可以直接被获取.
这也说明在OnCommand事件中参数是带值传递的.
4正确获取CommandName和CommandArgument值应注意的问题通过前面的例子,我们可以明白CommandName和CommandArgument值的获取与所发生的事件及形参e的数据类型有关.
如果指定的事件与e的数据类型不正确的话,在获取CommandName和CommandArgument值时将会出现错误.
以下将分析可能会发生的两种错误情况.
在Onclick事件中,如果将形参e的数据类型由.
EventArgs改为CommandEventArgs,虽然在程序中可以通过e直接引用到CommandName和CommandArgument属性,但在运行是会出现"没有与委托DelegateSubEventHandler(senderAsObject,eAsSystem.
EventArgs)相同的签名"的错误.
在OnCommand事件中,默认情况下,形参e为CommandEventArgs数据类型.
如将形参e的数据类型改为EventArgs数据类型,则不能在程序中引用CommandName和CommandArgument属性,而且运行中会出现"没有与委托DelegateSubCommandEventHandler(senderAsObject,eAsCommandEventArgs)相同的签名"的错误.
以上两种问题出现的原因就是在控件的一些事件里面调用了函数,而这些函数的参数与该事件所要用到的参数类型不一致,从而导致事件的重载均与委托不匹配.
所以如果要在OnCommand事件中引用参数e的CommandName和CommandArgument属性,必须确保形参e的数据类型为CommandEventArgs.
如果是Onclick事件,形参e的数据类型必须为EventArgs,该类型的e无法获取CommandName和CommandArgument的值,但可以通过sender参数来获取.
5通过CommandName或CommandArgument的值确定单击了哪个按钮CommandName和CommandArgument最主要的用途在于单击按钮时可以传递参数.
我们可以标记按钮,使代码能根据窗体上单击的按钮进行逻辑判断,让窗体上的多个按钮来处理一个事件.
下面通过一段相关的程序来说明,多个按钮如何同时响应一个事件以及根据CommandName的值判断哪一个按钮被单击了.
首先通过下面程序清单构建3个Button控件来处理一个事件.
1.
2.
3.
本段程序创建了三个按钮这里使用的是OnCommand事件,它们处理同一个Button_Command事件.
那么事件应该如何确定单击哪个按钮呢可以通过CommandName属性的值来确(下转第39页)··37万方数据l23456789Ol己|叫5E]日马口⑶端点数区分定义端点如4.
3节中,表示8连同域中,只用一个像素与其相邻,我们称之为端点.
如2,5,7,6,9的端点数是2,而3,4的端点数是3.
⑷端点分布域首先把单个数字分成上左、上右和下左、下右四个域.
端点分布域是指端点落在我们分好的一个域中.
如6和9的区份是:6的端点是分布在上域中,而9的端点分布在下域中.
这样我们就可以很容易区分6和9的区别了.
2和5的区分是:2的端点分布在上左和下右两个区域,5的端点分布在上右和下左两个域中,这样我们就能区分2和5了.
⑸2和7的区分由于7的写法不一样,因此,我们只能用垂直面投影法来区分2和7.
显然,7的投影上部分像素点与下部分像素点的比值是不一样的.
图1仪表数字的数字与字体显示形式从上面的分析中,我们发现最常见的上面的两种数字显示形式(图1所示),都符合上述的区分方法.
3试验仿真及结果本文所采用的数字图像是对仪表表盘的数字和汉字[5]进行识别时候的图像.
图2图3图3是图2经过细化后的得到图像.
在利用上述的方法进行识别的时候都能得到满意的识别结果,识别率达到98%以上;而且我们通过图1可以看出,在工业现场遇到的数字的形式也是多样的和复杂的.
这说明本文的方法具有兼容性强,准确率高的特点.
通过使用matlab[6]试验进行识别显示,运算的速度也比其他的方法快,具有一定的实用性.
参考文献:[1]张晋阳等.
手背静脉图像骨架特征提取的算法[J].
计算机应用,2007.
27(1):152~154[2]杨志平.
数学形态学在空间格局图像骨架提取中的应用[J].
地球信息学,2003.
32(5):411~413[3]黄凤岗,杨国,宋克欧.
柔性形态学在图象边缘检测中的应用[J].
中国图像图形学报,2000.
5(A).
4:254~287[4]徐志平.
基于交叉视觉皮质模型二值图像形态学算法[J].
计算机辅助设计与图形学学报,2007.
19(8):990~994[5]戴汝为,郝红卫,肖旭红.
汉字识别的系统与集成[M].
浙江科学技术出版社,1998.
[6]赵春晖,张兆礼,梅晓丹.
现代图像处理技术及Matlba实现[M].
人民邮电出版社,2001.
定.
在这个例子中,该属性拥有不同的值:select、edit和delete.
下一步创建这三个按钮要处理的Button_Command事件.
1.
ProtectedSubButton_Command(ByValsenderAsObject,ByValeAsSystem.
Web.
UI.
WebControls.
CommandEventArgs)2.
SelectCasee.
CommandName3.
Case"select"4.
Response.
Write("Button1wasselected")5.
Case"edit"6.
Response.
Write("Button2wasselected")7.
Case"delete"8.
Response.
Write("Button3wasselected")9.
EndSelect10.
EndSub在这一事件过程中,通过CommandName传递过来的值,可以方便地确定当前单击了哪个按钮,从而执行相应的操作.
6结束语提交按钮与命令按钮的主要区别在于它们是否有Com-mandName和CommandArgument两个属性.
设置了这两个属性的按钮称为命令按钮,它具备了提交铵钮的所有功能,还可以在程序中获取CommandName和CommandArgument两个属性传递过来的值.
具体获取值的方法可以在按钮的单击事件中来完成.
单击按钮既可以在Click中发生也可以在Command事件中发生;虽然在这两个事件中都可以获取CommandName和CommandArgument的值,但是方法却是不同的.
在这两个事件中要注意形参e的数据类型,形参e的数据类型必须与它所处的事件相匹配,否则将会出错.
参考文献:[1]赵彦敏.
ASP.
NET程序员参考手册[M].
清华大学出版社,2002.
[2](美)沃尔瑟著,谭振林等译.
ASP.
NET3.
5揭秘(卷2)[M].
人民邮电出版社,2009.
[3]苏英如.
ASP.
NET编程技术与交互式网页设计[M].
中国水利水电出版社出版社,2004.
[4]唐植华,郭兴峰.
ASP.
NET2.
0动态网站开发基础教程(C#2005篇)[M].
清华大学出版社,2008.
[5]华夏,陈新寓.
ASP.
NET案例实训教程[M].
科学出版社,2009.
[6]刘端阳,汪杰.
ASP.
NET网络开发实用工程案例[M].
人民邮电出版社,2008.
CECE(上接第37页)··39万方数据
优林怎么样?优林好不好?优林 是一家国人VPS主机商,成立于2016年,主营国内外服务器产品。云服务器基于hyper-v和kvm虚拟架构,国内速度还不错。今天优林给我们带来促销的是国内东北地区哈尔滨云服务器!全部是独享带宽!首月5折 续费5折续费!地区CPU内存硬盘带宽价格购买哈尔滨电信2核2G50G1M53元直达链接哈尔滨电信4核4G50G1M83元直达链接哈尔滨电信8核8G50G1M131元直...
每每进入第四季度,我们就可以看到各大云服务商的促销力度是一年中最大的。一来是年底的促销节日活动比较多,二来是商家希望最后一个季度冲刺业绩。这不还没有到第四季度,我们看到有些商家已经蠢蠢欲动的开始筹备活动。比如素有低价VPS收割机之称的Virmach商家居然还没有到黑色星期五就有发布黑五促销活动。Virmach 商家有十多个数据中心,价格是便宜的,但是机器稳定性和速度肯定我们也是有数的,要不这么低的...
Sharktech又称SK或者鲨鱼机房,是一家主打高防产品的国外商家,成立于2003年,提供的产品包括独立服务器租用、VPS云服务器等,自营机房在美国洛杉矶、丹佛、芝加哥和荷兰阿姆斯特丹等。之前我们经常分享商家提供的独立服务器产品,近期主机商针对云虚拟服务器(CVS)提供优惠码,优惠后XS套餐年付最低仅33.39美元起,支持使用支付宝、PayPal、信用卡等付款方式。下面以XS套餐为例,分享产品配...
asp.net面试题为你推荐
sherylsandberg这个文章什么意思 给个翻译好吗 谢谢了百度商城百度商城里抽奖全是假的关键字什么叫关键词www.niuav.com给我个看电影的网站www.78222.com我看一个网站.www.snw58.com里面好有意思呀,不知道里面的信息是不是真实的www.se222se.com请问http://www.dibao222.com这个网是做什么www.36ybyb.com有什么网址有很多动漫可以看的啊?我知道的有www.hnnn.net.很多好看的!但是...都看了!我想看些别人哦!还有优酷网也不错...dadi.tv海信电视机上出现英文tvservice是什么意思?66smsm.comffff66com手机可以观看视频吗?机器蜘蛛有谁知道猎人的机械蜘蛛在哪捉的
域名升级访问 vps租用 什么是二级域名 3322免费域名 免费cn域名 堪萨斯服务器 raksmart googleapps iisphpmysql debian7 免费个人空间 爱奇艺vip免费试用7天 美国堪萨斯 gtt 能外链的相册 如何注册阿里云邮箱 卡巴斯基是免费的吗 帽子云排名 免费网络 万网空间 更多