国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

Button控件的onclick、oncommand、commandname、CommandArgument的區別

2024-07-10 13:29:17
字體:
來源:轉載
供稿:網友

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)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 常山县| 桃园市| 平邑县| 邵阳市| 临武县| 错那县| 任丘市| 紫金县| 奈曼旗| 根河市| 拜城县| 霍州市| 仙居县| 海安县| 白城市| 沾化县| 大埔县| 北票市| 营口市| 太原市| 岳池县| 石景山区| 兴仁县| 方正县| 镇坪县| 肃宁县| 榆社县| 丰都县| 贵南县| 万年县| 凭祥市| 宁陵县| 贵州省| 谢通门县| 东城区| 泰顺县| 蕉岭县| 南宁市| 修武县| 武宣县| 潢川县|