OnServerClick for按钮不起作用

时间:2012-07-14 21:26:42

标签: c# asp.net

我有一个html按钮,我希望有一个服务器端点击事件,但是当单击按钮并且页面进行回发时它不会触发。该按钮位于ItemTemplate的{​​{1}}内,用于呈现信息表。

ASPX

<asp:ListView id="usersListView"/>

aspx.cs

<button runat="server" id="delete" class="btn btn-mini" title="Delete" OnServerClick="delete_Onclick"></button>

1 个答案:

答案 0 :(得分:2)

我的猜测是它不会像这样工作,因为放置在项模板中的嵌套控件引发的事件应该由ListView的ItemCommand事件处理。

为此,您应该设置按钮的CommandNameCommandArgument并处理列表视图的ItemCommand中的特定值。

但是,如果我记得错误,HtmlInputButton没有CommandNameCommandArgument属性。相反,请使用asp:Button

 <asp:Button id="delete" runat="server" CommandName="something" CommandArgument="somethingelse" />

并处理listview的itemcommand:

 protected void usersListView_ItemCommand( object sender, ListViewCommandEventArgs e )
 {
     switch ( e.CommandName ) { 
         case "something" : 
             // this is where you handle the button click
     }
 }

请注意,CommandArgument通常绑定到特定于项目的值(也许是id),以便在服务器端处理程序内部可以精确识别确切的单击按钮:

 <asp:Button id="delete" runat="server" CommandName="something" CommandArgument="<%# Eval( "id" ) %>" />

 protected void usersListView_ItemCommand( object sender, ListViewCommandEventArgs e )
 {
     switch ( e.CommandName ) { 
         case "something" : 
             // this is where you handle the button click
             var itemid = e.CommandArgument; 
     }
 }