ASP.NET中Button控件的OnCommand事件与OnClick事件的不同之处?采用其中的任何一个事件执行的效果基本上都是相同的。它们的不同之处是什么呢?

解决方案 »

  1.   

    msdn上已经说的很清楚了当单击 Button 控件时会引发 Command 事件。当命令名(如 Sort)与 Button 控件关联时,通常使用该事件。这使您可以在一个网页上创建多个 Button 控件,并以编程方式确定单击了哪个 Button 控件。
    看一下他的例子吧:<%@ Page Language="C#" AutoEventWireup="True" %><html>
    <head>   <script runat="server">      void CommandBtn_Click(Object sender, CommandEventArgs e) 
          {         switch(e.CommandName)
             {            case "Sort":               // Call the method to sort the list.
                   Sort_List((String)e.CommandArgument);
                   break;            case "Submit":               // Display a message for the Submit button being clicked.
                   Message.Text = "You clicked the <b>Submit</b> button";               // Test whether the Command Argument is an empty string ("").
                   if((String)e.CommandArgument == "")
                   {
                      // End the message.
                      Message.Text += ".";
                   }
                   else
                   {
                      // Display an error message for the command argument. 
                      Message.Text += ", but the command argument is not recogized.";
                   }                
                   break;            default:               // The command name is not recognized. Display an error message.
                   Message.Text = "Command name not recogized.";
                   break;          }      }      void Sort_List(string commandArgument)
          {         switch(commandArgument)
             {            case "Ascending":
     
                   // Insert code to sort the list in ascending order here.
                   Message.Text = "You clicked the <b>Sort Ascending</b> button.";
                   break;            case "Descending":
                  
                   // Insert code to sort the list in descending order here.
                   Message.Text = "You clicked the <b>Sort Descending</b> button.";
                   break;            default:
            
                   // The command argument is not recognized. Display an error message.
                   Message.Text = "Command argument not recogized.";
                   break;         }      }      void Page_Load(Object sender, EventArgs e)
          {         // Manually register the event-handling method for the Command  
             // event of the Button controls.
             Button1.Command += new CommandEventHandler(this.CommandBtn_Click);
             Button2.Command += new CommandEventHandler(this.CommandBtn_Click);
             Button3.Command += new CommandEventHandler(this.CommandBtn_Click);
             Button4.Command += new CommandEventHandler(this.CommandBtn_Click);
             Button5.Command += new CommandEventHandler(this.CommandBtn_Click);      }   </script></head>
     
    <body>   <form runat="server">      <h3>Button CommandName Example</h3>      Click one of the command buttons.      <br><br>
     
          <asp:Button id="Button1"
               Text="Sort Ascending"
               CommandName="Sort"
               CommandArgument="Ascending"
               runat="server"/>      &nbsp;      <asp:Button id="Button2"
               Text="Sort Descending"
               CommandName="Sort"
               CommandArgument="Descending"
               runat="server"/>      <br><br>      <asp:Button id="Button3"
               Text="Submit"
               CommandName="Submit"
               runat="server"/>      &nbsp;      <asp:Button id="Button4"
               Text="Unknown Command Name"
               CommandName="UnknownName"
               CommandArgument="UnknownArgument"
               runat="server"/>      &nbsp;      <asp:Button id="Button5"
               Text="Submit Unknown Command Argument"
               CommandName="Submit"
               CommandArgument="UnknownArgument"
               runat="server"/>
           
          <br><br>      <asp:Label id="Message" runat="server"/>
     
       </form>
     
    </body>
    </html>
      

  2.   

    你可以把多个Button绑定到同一个Command上采用不同的Argument来实现不同的功能,这样可以代码重用。Click的话得老实一个一个写了。
      

  3.   

    举个例子吧
    用DATAGRID的话可以用ONCOMMOND来对进行针对某个绑定了数据的单元的操作
    而ONCLICK的话只能进行和绑定数据无关的操作...