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万方数据
美国特价云服务器 2核4G 19.9元杭州王小玉网络科技有限公司成立于2020是拥有IDC ISP资质的正规公司,这次推荐的美国云服务器也是商家主打产品,有点在于稳定 速度 数据安全。企业级数据安全保障,支持异地灾备,数据安全系数达到了100%安全级别,是国内唯一一家美国云服务器拥有这个安全级别的商家。E5 2696v2x2 2核 4G内存 20G系统盘 10G数据盘 20M带宽 100G流量 1...
TNAHosting是一家成立于2012年的国外主机商,提供VPS主机及独立服务器租用等业务,其中VPS主机基于OpenVZ和KVM架构,数据中心在美国芝加哥机房。目前,商家在LET推出芝加哥机房大硬盘高配VPS套餐,再次刷新了价格底线,基于OpenVZ架构,12GB内存,500GB大硬盘,支持月付仅5美元起。下面列出这款VPS主机配置信息。CPU:4 cores内存:12GB硬盘:500GB月流...
horain怎么样?horain cloud是一家2019年成立的国人主机商家,隶属于北京辰帆科技有限公司,horain持有增值电信业务经营许可证(B1-20203595),与中国电信天翼云、腾讯云、华为云、UCloud、AWS等签署渠道合作协议,主要提企业和个人提供云服务器,目前商家推出了几款特价物理机,都是在内地,性价比不错,其中有目前性能比较强悍的AMD+NVMe系列。点击进入:horain...
asp.net面试题为你推荐
工信部约谈电信我在工信部投诉了电信,什么时候才能回复?7788k.comwww.k6320.com 大家给我看看这网站是真是假...抓站工具抓鸡要什么工具?ip查询器怎么样查看自己电脑上的IP地址javbibinobibi的中文意思是?广告法新广告法哪些广告词不能用,广告违禁词大全sodu.tw台湾的可以看小说的网站www.k8k8.com谁能给我几个街污网站我去自己学www.mfav.orgwww.osta.org.cn国家职业资格证书全国联网查询,为什么随便输入什么都可以查,都要验证码铂金血痕“斑斑的血痕”是什么意思?
上海域名注册 韩国服务器租用 2019年感恩节 好看的桌面背景图 183是联通还是移动 微软服务器操作系统 免费私人服务器 1元域名 监控服务器 腾讯云平台 机柜尺寸 服务器是什么 卡巴斯基官方下载 shuangshiyi 网络安装 dmz主机 如何架设服务器 qq空间论坛 qq空间技术网 美国主机购买 更多