我有一个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>
答案 0 :(得分:2)
我的猜测是它不会像这样工作,因为放置在项模板中的嵌套控件引发的事件应该由ListView的ItemCommand
事件处理。
为此,您应该设置按钮的CommandName
和CommandArgument
并处理列表视图的ItemCommand
中的特定值。
但是,如果我记得错误,HtmlInputButton
没有CommandName
和CommandArgument
属性。相反,请使用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;
}
}