读书人

按钮事件的关联解决办法

发布时间: 2012-01-20 18:53:53 作者: rapoo

按钮事件的关联
页面上很多按钮,实现的功能基本差不多.我现在想把这些事件统一用一个事件来处理,就像GridView的ItemCommand一样可以通过e.CommandName来取到不同按钮的CommandName,根据不同的CommandName来实现不同的代码。但现在问题是button的Click时间没有e.CommandName这个属性..我的想法能实现吗?

[解决办法]
当在网页上具有多个 Button 控件时,可使用 CommandName 属性来指定或确定与每一 Button 控件关联的命令名。可以用标识要执行的命令的任何字符串来设置 CommandName 属性。然后,可以以编程方式确定 Button 控件的命令名并执行相应的操作。

有关命令的附加信息(如 Ascending)可以使用 CommandArgument 属性来指定。

无法通过主题或样式表主题设置此属性。有关更多信息,请参见 ThemeableAttribute 和 ASP.NET 主题和外观概述。

示例

下面的代码示例演示如何使用 CommandName 属性来创建对列表进行排序的 Button 控件。

Visual Basic
<%@ Page Language= "VB " AutoEventWireup= "True " %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN "
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html >
<head runat= "server ">
<title> Button CommandName Example </title>
<script runat= "server ">

Sub CommandBtn_Click(sender As Object, e As CommandEventArgs)

Select e.CommandName

Case "Sort "

' Call the method to sort the list.
Sort_List(CType(e.CommandArgument, String))

Case "Submit "

' Display a message for the Submit button being clicked.
Message.Text = "You clicked the Submit button "

' Test whether the command argument is an empty string ( " ").
If CType(e.CommandArgument , String) = " " Then

' End the message.
Message.Text &= ". "

Else

' Display an error message for the command argument.
Message.Text &= ", however the command argument is not recogized. "

End If

Case Else

' The command name is not recognized. Display an error message.
Message.Text = "Command name not recogized. "

End Select

End Sub

Sub Sort_List(commandArgument As String)

Select commandArgument

Case "Ascending "

' Insert code to sort the list in ascending order here.
Message.Text = "You clicked the Sort Ascending button. "

Case "Descending "

' Insert code to sort the list in descending order here.
Message.Text = "You clicked the Sort Descending button. "

Case Else

' The command argument is not recognized. Display an error message.
Message.Text = "Command argument not recogized. "

End Select

End Sub

</script>

</head>

<body>

<form id= "form1 " runat= "server ">

<h3> Button CommandName Example </h3>

Click on one of the command buttons.

<br /> <br />

<asp:Button id= "Button1 "
Text= "Sort Ascending "
CommandName= "Sort "
CommandArgument= "Ascending "


OnCommand= "CommandBtn_Click "
runat= "server "/>

 

<asp:Button id= "Button2 "
Text= "Sort Descending "
CommandName= "Sort "
CommandArgument= "Descending "
OnCommand= "CommandBtn_Click "
runat= "server "/>

<br /> <br />

<asp:Button id= "Button3 "
Text= "Submit "
CommandName= "Submit "
OnCommand= "CommandBtn_Click "
runat= "server "/>

 

<asp:Button id= "Button4 "
Text= "Unknown Command Name "
CommandName= "UnknownName "
CommandArgument= "UnknownArgument "
OnCommand= "CommandBtn_Click "
runat= "server "/>

 

<asp:Button id= "Button5 "
Text= "Submit Unknown Command Argument "
CommandName= "Submit "
CommandArgument= "UnknownArgument "
OnCommand= "CommandBtn_Click "
runat= "server "/>

<br /> <br />

<asp:Label id= "Message " runat= "server "/>

</form>

</body>
</html>


C#
<%@ Page Language= "C# " AutoEventWireup= "True " %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN "
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html >
<head runat= "server ">
<title> Button CommandName Example </title>
<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 Submit 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 += ", however 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 Sort Ascending button. ";


break;

case "Descending ":

// Insert code to sort the list in descending order here.
Message.Text = "You clicked the Sort Descending button. ";
break;

default:

// The command argument is not recognized. Display an error message.
Message.Text = "Command argument not recogized. ";
break;

}

}

</script>

</head>

<body>

<form id= "form1 " runat= "server ">

<h3> Button CommandName Example </h3>

Click on one of the command buttons.

<br /> <br />

<asp:Button id= "Button1 "
Text= "Sort Ascending "
CommandName= "Sort "
CommandArgument= "Ascending "
OnCommand= "CommandBtn_Click "
runat= "server "/>

 

<asp:Button id= "Button2 "
Text= "Sort Descending "
CommandName= "Sort "
CommandArgument= "Descending "
OnCommand= "CommandBtn_Click "
runat= "server "/>

<br /> <br />

<asp:Button id= "Button3 "
Text= "Submit "
CommandName= "Submit "
OnCommand= "CommandBtn_Click "
runat= "server "/>

 

<asp:Button id= "Button4 "
Text= "Unknown Command Name "
CommandName= "UnknownName "
CommandArgument= "UnknownArgument "
OnCommand= "CommandBtn_Click "
runat= "server "/>

 

<asp:Button id= "Button5 "
Text= "Submit Unknown Command Argument "
CommandName= "Submit "
CommandArgument= "UnknownArgument "
OnCommand= "CommandBtn_Click "
runat= "server "/>

<br /> <br />

<asp:Label id= "Message " runat= "server "/>

</form>

</body>
</html>


[解决办法]
你可以这样做

private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.button1.Click += new System.EventHandler(this.button_Click);
this.button2.Click += new System.EventHandler(this.button_Click);
}

private void button_Click(object sender, EventArgs e)
{
if(sender is System.Windows.Forms.Button)
{
switch (((System.Windows.Forms.Button)sender).Name)
{
case "button1 ":
....
case "button2 ":
....
}
}


------解决方案--------------------


用command事件,click事件是实现不了你要的效果的。

读书人网 >asp.net

热点推荐