• Button控件的onclick、oncommand、commandname、CommandArgument的区别


    Button控件
    Button控件在执行后被解析为<input type="submit">代码,而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="您选中的动作为:<font color=red>"+argName+"</font>,动作目标是:<font color=red>"+argArg+"</font>";
    }
    </script>
    <html>
    <head>
    <title></title>
    </head>
    <body>
    <b>Button控件演示</b>
    <hr>
    <form runat="server">
    <asp:Button id="Button1" CommandName="踢" CommandArgument="足球" Text="动作1" runat="server" OnClick="Button_Click" /><br>
    <asp:Button id="Button2" CommandName="打" CommandArgument="篮球" Text="动作2" runat="server" OnClick="Button_Click" /><br>
    <hr>
    <asp:Label id="Label1" runat="server" />
    </form>
    </body>
    </html>
    ////////////////////////////////////
    <% @ 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="您选中的动作为:<font color=red>"+argName+"</font>,动作目标是:<font color=red>"+argArg+"</font>";
    }
    </script>
    <html>
    <head>
    <title></title>
    </head>
    <body>
    <b>Button控件演示</b>
    <hr>
    <form runat="server">
    <asp:Button id="Button1" CommandName="踢" CommandArgument="足球" Text="动作1" runat="server" OnCommand="Button_Click" /><br>
    <asp:Button id="Button2" CommandName="打" CommandArgument="篮球" Text="动作2" runat="server" OnCommand="Button_Click" /><br>
    <hr>
    <asp:Label id="Label1" runat="server" />
    </form>
    </body>
    </html>
    分析: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)

    从今天开始坚持一周发三篇文章
  • 相关阅读:
    看了前辈缠中说禅及其反响,忍不住想说些东西
    利弗莫尔的操盘精华篇
    缠中说禅:教你炒股票108课(转载)
    评温斯坦的炒股书(非常重要,常看看)
    本散女2
    使用PHP-GTK编写一个windows桌面应用程序
    php.exe php-cgi.exe php-win.exe的区别
    php调试利器之phpdbg
    yaf框架安装配置
    phalcon框架安装
  • 原文地址:https://www.cnblogs.com/strivers/p/1945285.html
Copyright © 2020-2023  润新知