2013-03-08 75 views
0

我有一个asp.net复选框,并在更新面板中将autopostback设置为true。当我检查复选框时,它显示我想要显示的其他控件。当我取消选中复选框时,数据库中的值会更新。这一切工作正常。更新面板中的ASP.Net复选框

如果我想在取消选中该复选框后移动到另一个页面,则会显示一个对话框,询问我是想留在该页面还是离开页面。我怎样才能阻止该对话框出现?

<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 

回答

0

Check this previous answer解释为什么发生这种情况。

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

回答前面的问题指出,你可以通过设置处理避免这null

window.onbeforeunload = null;