我试图根据页面中另一个字段的值绕过ConfirmButtonExtender。
基本上,当用户单击我的“取消”按钮时,通常我会使用confirmbuttonextender和modalpopupextender显示一个modalpopup,以显示一个对话框,确认他们希望取消所做的任何更改并返回到先前的屏幕。如果他们单击“是”,则将触发按钮的onclick事件,该事件将调用代码背后的代码并将用户重定向到另一个页面。如果他们单击否,则仅返回同一页面,而没有更改。
但是,在某些情况下,我知道我的用户无法执行任何编辑(不允许他们进行编辑),对于这些用户,我不想显示“您确定要离开吗?更改”对话框。
我设置了一个名为“ cbAllowEdit”的隐藏复选框字段,以指示是否允许用户编辑这些字段。
我试图使用在link text处找到的技术来使此工作正常进行,但它似乎根本没有触发按钮的onclientclick事件。
这是我的代码。
ASPX和Javascript
<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");
}
关于我在做什么错的任何想法?
最佳答案
就像克里斯说的那样,您不必具有ConfirmButtonExtender和ModalPopupExtender(尽管这看起来像JavaScript确认对话框中对话框中的Confirm()函数仅限于OK和Cancel按钮这一事实,这是一种技巧,未来:-))
如果您在代码隐藏中知道该用户将不会进行任何编辑(如您的cbAllowEdit控件所示),那么您应该能够仅禁用ConfirmButtonExtender:
ConfirmButtonExtenderbtnCancel.Enabled = false;
然后,单击“取消”按钮将使您直接进入代码隐藏功能,而无需任何确认。