페이지의 다른 필드 값에 따라 ConfirmButtonExtender를 무시하려고합니다.조건부 ConfirmButtonExtender
기본적으로 사용자가 "취소"버튼을 클릭하면 confirmbuttonextender 및 modalpopupextender를 사용하여 modalpopup을 표시하여 변경 한 내용을 취소하고 이전 화면으로 돌아가는 대화 상자를 표시합니다 . 사용자가 예를 클릭하면 버튼의 onclick 이벤트가 발생하여 코드 숨김의 일부 코드를 호출하고 사용자를 다른 페이지로 리디렉션합니다. 그들이 no를 클릭하면 변경없이 동일한 페이지로 돌아갑니다.
그러나 상황에 따라 사용자가 편집을 수행 할 수 없다는 사실을 알고 있습니다 (허용되지 않음). 해당 사용자는 '계속 하시겠습니까?'라고 표시하고 싶지 않습니다. 변경 사항을 잃어 버리게됩니다. "대화 상자가 나타납니다.
"cbAllowEdit"라는 숨겨진 확인란 필드를 설정하여 사용자가 필드를 편집 할 수 있는지 여부를 나타냅니다.
나는이 기술을 사용하기 위해 link text에서 찾은 기술을 사용하려고했지만 버튼의 onclientclick 이벤트를 전혀 발사하지 않은 것으로 보입니다.
여기 내 코드입니다. 뒤에
ASPX & 자바 스크립트
<asp:CheckBox ID="cbAllowEdit" runat="server" Checked="true" />
<asp:Button ID="btnCancel" runat="server" CausesValidation="false"
OnClick="btnCancel_Click" Text="Cancel" OnClientClick="disableSubmit();return false;" />
<ajaxToolKit:ConfirmButtonExtender ID="ConfirmButtonExtenderbtnCancel"
runat="server" DisplayModalPopupID="ModalPopupExtenderbtnCancel"
TargetControlID="btnCancel" BehaviorID="ConfirmButtonExtenderbtnCancel" />
<ajaxToolKit:ModalPopupExtender ID="ModalPopupExtenderbtnCancel" runat="server"
BackgroundCssClass="modalBackground" CancelControlID="btnCancelCancel"
OkControlID="btnConfirmCancel" PopupControlID="ConfirmCancelPanel"
TargetControlID="btnCancel" />
<asp:Panel ID="ConfirmCancelPanel" runat="server" CssClass="modalWindow"
Height="200" Width="450">
<p class="confirmMessage">
Are you sure you want to navigate away from this record?
</p>
<div align="center">
<p class="feedbackError">If you have made any changes to the record since the last time
you saved, they will be lost.</p>
<asp:Button ID="btnConfirmCancel" runat="server" Text="Yes" Width="75" />
<asp:Button ID="btnCancelCancel" runat="server" Text="No" Width="75" />
</div>
</asp:Panel>
<script type="text/javascript">
function disableSubmit() {
if (document.getElementById('<%= cbAllowEdit.ClientID %>').checked) {
return checkSubmit();
}
else {
return true;
}
}
function checkSubmit() {
var confirmButton = $find('ConfirmButtonExtenderbtnCancel');
confirmButton._displayConfirmDialog();
}
</script>
코드 : 내가 잘못 뭐하는 거지에
/// <summary>
/// Runs when the btnCancel button is clicked.
/// </summary>
protected void btnCancel_Click(object sender, EventArgs e)
{
Page.Response.Redirect("~/Searches/LookupCode/Default.aspx");
}
어떤 아이디어?
나는 어제 늦게 이것을 결국 알아내어 이것을 끝내었다. –
+1. 아, 잘 했어. 나는 그녀가 이미 편집 모드에 있었다는 것을 알았는지 몰랐다. 전적으로 클라이언트 쪽 수정에 집중했습니다. – Chris