取消FormView的编辑模式?

时间:2013-07-22 20:58:28

标签: asp.net webforms

我在UpdatePanel中有一个带View和Edit模式的FormView:

<asp:UpdatePanel runat="server">
    <ContentTemplate>
        <asp:FormView runat="Server" DefaultMode="ReadOnly" DataSourceID="_myDataSource" >
            <ItemTemplate>

                <!-- View controls omitted -->
                <asp:Button runat="server" CommandName="Edit" Text="Edit" />
            </ItemTemplate>

            <EditItemTemplate>

                <!-- Edit controls omitted -->
                <asp:Button runat="server" CommandName="Update" Text="Save"  />
                <asp:Button runat="server" CommandName="Cancel" Text="Cancel" CausesValidation="false" />
            </EditItemTemplate>
        </asp:FormView>
    </ContentTemplate>
</asp:UpdatePanel>

 <!-- Data source (may attributes omitted) -->
<asp:ObjectDataSource ID="_myDataSource" runat="server" />

EditUpdate按钮/命令工作正常,但Cancel按钮无效。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

页面似乎没有闪烁,但点击取消按钮2事件由FormView引发并且回发确实发生。您可以参考MSDN。 (备注部分下的表格)

“取消”按钮的作用是:

Cancels an edit or insert operation and returns the FormView control to the mode specified by the DefaultMode property. Raises the ModeChanged and ModeChanging events.

所以你需要处理ModeChanged和ModeChanging的事件,如下所示:

<asp:formview id="EmployeeFormView"
        datasourceid="EmployeeSource" allowpaging="true" datakeynames="EmployeeID"
        onmodechanged="EmployeeFormView_ModeChanged"  
        onmodechanging="EmployeeFormView_ModeChanging"
        runat="server">

因此,在“取消”按钮单击后要运行的任何代码都应根据要求使用这两个事件。

我把调试器放在Page_Load,modeChanging()&amp; modechanged(),点击“取消”按钮后,所有三个事件都按顺序触发。