0

我有一个带有插入和删除按钮的表单视图。插入按钮会触发 onInserting 事件,但删除按钮不会触发 onDeleting 事件。为什么?这是我的代码:

<asp:FormView ID="LanguagesFormView" runat="server" DefaultMode="Insert" DataSourceID="LanguageSqlDataSource" OnItemInserting="LanguagesFormView_ItemInserting" OnItemDeleting="LanguagesFormView_ItemDeleting">
    <InsertItemTemplate>
        <dx:ASPxComboBox ID="ASPxComboBox1" runat="server" DataSourceID="LanguageSqlDataSource" ValueField="LanguageID" TextField="LanguageEN"></dx:ASPxComboBox>
        <dx:ASPxListBox ID="ASPxListBox1" runat="server" DataSourceID="ProjectLanguageSqlDataSource" TextField="LanguageEN"></dx:ASPxListBox>
        <dx:ASPxButton ID="addLangASPxButton" runat="server" CommandName="Insert" Text="Add"></dx:ASPxButton>
        <dx:ASPxButton ID="deleteLangASPxButton" runat="server" CommandName="Delete" Text="Delete"></dx:ASPxButton>
    </InsertItemTemplate>
</asp:FormView>

我通过在事件处理程序处放置断点来测试它。

4

1 回答 1

2

当 FormView 处于插入模式时,OnItemDeleting 事件不会触发 - 这是有道理的,因为如果您只是插入一条新记录,您怎么知道要删除哪条记录?

如果您将删除按钮放在 ItemTemplate 而不是 InsertItemTemplate 中,则删除事件处理程序将正确触发。

<asp:FormView ID="LanguagesFormView" runat="server" DataSourceID="LanguageSqlDataSource"
    OnItemInserting="LanguagesFormView_ItemInserting" OnItemDeleting="LanguagesFormView_ItemDeleting" DataKeyNames="LanguageID">
    <ItemTemplate>
        ...
        <dx:ASPxButton ID="deleteLangASPxButton" runat="server" CommandName="Delete" Text="Delete" />
    </ItemTemplate>
</asp:FormView>

另请注意,您应该在 FormView 上设置 DataKeyNames 属性,以便获取要在服务器端删除的密钥。

于 2013-11-07T15:40:18.633 回答