【www.gdgbn.com--php常用代码】

button控件的commandname、commandargument onclick、oncommand 的区别
button控件在执行后被解析为代码,而button控件的优点就在于提交程序的同时能够传递参数,传递参数是靠commandname与commandargument属性来完成的。
举两个button控件的例子。
<% @ page language="c#" %>
<script language="c#" runat="server">
public void button_click(object sender,eventargs e)
{
     string argname = ((button)sender).commandname;

    //sender为一个对象,故commandargument为string
     string argarg = ((button)sender).commandargument;
     label1.text="您选中的动作为:"+argname+",动作目标是:"+argarg+"";
}
</script>





button控件演示




<asp教程:button id="button1" commandname="踢" commandargument="足球" text="动作1" runat="server" onclick="button_click" />









////////////////////////////////////
<% @ page language="c#" %>
<script language="c#" runat="server">
public void button_click(object sender,commandeventargs e)
{
     string argname = e.commandname;

    //commandeventargsr为一个类,故commandargument.tostring();
     string argarg = e.commandargument.tostring();
     label1.text="您选中的动作为:"+argname+",动作目标是:"+argarg+"";
}
</script>





button控件演示














分析:1.两个程序用不同的方法完成相同的功能和效果。
           2.类commandeventargs有两个公共属性,commandname(用来获取命令的名称)和commandargument(用来获取命令的参数)。二者相互关联。
           3.两个程序分别用onclick与oncommand激发事件,区别在于oncommand是带值传递的。
           4.所有button类的web控件(如imagebutton,linkbutton)均含有commandname和commandargument这两个属性。

问题:上文中两个程序采用的参数commandeventargs,eventargs有什么区别?为什么在第一个程序中使用eventargs,而不能使用commandeventargs(已经验证,出现“button_click”的重载均与委托“system.eventhandler”不匹配)?

例子:http://hi.baidu.com/fuhengyu/blog/item/b37e14fb3e6055264e4aea65.html

解决:在网上查资料得到的结果:

这类问题出现的原因就是在控件的一些事件里面调用了函数,而这些函数的参数与该事件所要用到的参数类型不一致。在msdn中搜索onpageindexchanging、onpageindexchanged等关键字就可以得到:

c#
protected virtual void onpageindexchanged (eventargs e)

c#
protected virtual void onpageindexchanging (detailsviewpageeventargs e)

c#
protected virtual void onrowdeleting (gridviewdeleteeventargs e)

c#
protected virtual void onrowdeleted ( datarowchangeeventargs e)
这样,在何种事件中使用什么样的参数类型就一目了然了。还有后面的onrowdeleted、onrowdeleting也是同样的道理。
相应事件:

public void mylist_page(object sender, gridviewpageeventargs e)
public void mydatagrid_delete(object sender, gridviewdeleteeventargs e)

本文来源:http://www.gdgbn.com/jiaocheng/29004/