【发布时间】:2009-10-20 15:44:00
【问题描述】:
我在 GridView 中有一个 ImageButton。
<asp:GridView ID="ItemGridView" runat="server" DataKeyNames="Id"
OnRowDataBound="ItemGridView_RowDataBound" AllowPaging="True"
AllowSorting="True" EnableSortingAndPagingCallbacks="True"
AutoGenerateEditButton="False" AutoGenerateDeleteButton="false"
DataSourceID="ItemDataSource" EnableViewState="true" >
....
<asp:TemplateField ShowHeader="False" ItemStyle-Width="40px">
<ItemTemplate>
<asp:ImageButton ID="btnDelete" SkinID="btnDelete"
runat="server" CausesValidation="false"
OnClick="btnDeleteAccountItem_Click"
OnClientClick="javascript:return confirm('Are you sure?');" />
</ItemTemplate>
</asp:TemplateField>
以及删除按钮事件的相应处理程序
protected void btnDeleteAccountItem_Click(object sender, EventArgs e) {
ImageButton btnDel = sender as ImageButton;
GridViewRow row = (GridViewRow)btnDel.NamingContainer;
....
}
我在很多地方都使用了同样的结构,而且效果很好。不过,我现在有一个 gridview,但它没有,我希望获得一些关于如何追踪问题的想法。
当我单击按钮时,客户端事件触发并显示警告框,然后回发触发,我可以在Page_Load 方法中打断点。所以按钮事件的客户端连接似乎有效。但是,该事件没有被处理,并且 btnDeleteAccountItem_Click 方法没有被调用。
这是一个复杂的页面,我无法发布所有代码。我可以做些什么来缩小潜在原因的范围?
【问题讨论】:
-
您是否检查过 Page_Load 中的任何信息,例如 IsPostBack 是否为 true 或表单集合中的 EVENTTARGET 值?
-
IsPostBack 为 true,并且表单集合似乎为空。这是什么意思?
-
我应该补充一点,GridView 在 MultiView 控件上,并且 form 标记在母版页中。
-
见下文 - EVENTTARGET 现在似乎具有正确的值,但仍然没有调用处理程序。
标签: c# asp.net event-handling