更新面板内的ASP.Net复选框

时间:2013-03-08 13:11:20

标签: asp.net .net vb.net visual-studio-2010 webforms

我有一个asp.net复选框,在更新面板中将autopostback设置为true。当我选中复选框时,它会显示我想要显示的其他控件。取消选中复选框时,将更新数据库中的值。这一切都很好。

如果我想在取消选中复选框后移动到另一个页面,则会显示一个对话框,询问我是要留在此页面还是离开页面。如何停止显示该对话框?

<asp:UpdatePanel runat="server" ID="upOnProbation" UpdateMode="Conditional">
        <ContentTemplate>
            <div>
                <table>
                    <tr>
                        <td>
                            <asp:CheckBox runat="server" Text="On Probation" ID="chkOnProbation" AutoPostBack="true" ClientIDMode="AutoID" />
                        </td>
                    </tr>
                    <asp:PlaceHolder runat="server" ID="plcProbabtionDates" Visible="false">
                        <tr>
                            <td>
                                Start date
                            </td>
                            <td>
                                <ComponentArt:Calendar runat="server" ID="dtStart" ControlType="Picker" PickerFormat="Short">
                                </ComponentArt:Calendar>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                End date
                            </td>
                            <td>
                                <ComponentArt:Calendar runat="server" ID="dtEnd" ControlType="Picker" PickerFormat="Short">
                                </ComponentArt:Calendar>
                            </td>
                        </tr>
                         <tr>
                        <td>
                            <asp:Button runat="server" ID="btnSave" Text="Save" CssClass="btn" />
                        </td>
                    </tr>
                    </asp:PlaceHolder>                   
                </table>
            </div>
        </ContentTemplate>

    </asp:UpdatePanel>




Protected Sub chkOnProbation_CheckedChanged(sender As Object, e As System.EventArgs) Handles chkOnProbation.CheckedChanged
        If chkOnProbation.Checked Then
            plcProbabtionDates.Visible = True
            dtStart.SelectedDate = DateTime.Now
            dtEnd.SelectedDate = DateTime.Now.AddMonths(6)
        Else
            plcProbabtionDates.Visible = False
            objCompany.On_Probation = False
            objCompany.Save(UserStaffID)
        End If
    End Sub

1 个答案:

答案 0 :(得分:0)

Check this previous answer解释为何会发生这种情况。

基本上当您在网页上有表单时,浏览器会为您触发onbeeforeunload事件,以确保计算未保存的更改。

上一个问题的答案表明,您可以通过将处理程序设置为null

来避免这种情况
window.onbeforeunload = null;