C# 条件confirButtonXtender
我试图根据页面中另一个字段的值绕过ConfirmButtonExtender 基本上,当用户单击我的“取消”按钮时,我通常会使用confirmbuttonextender和ModalPopupXtender显示一个modalpopup,以显示一个对话框,确认他们希望取消所做的任何更改并返回到上一屏幕。如果他们单击Yes,按钮的onclick事件将触发,调用codebehind中的一些代码,并将用户重定向到另一个页面。如果他们单击“否”,它将返回到同一页面,没有任何更改 但是,在某些情况下,我知道我的用户无法执行任何编辑(他们不允许),对于这些用户,我不想显示“您确定要离开吗?您将失去任何更改”对话框 我已经设置了一个名为“cbAllowEdit”的隐藏复选框字段,以指示是否允许用户编辑这些字段 我试图使用在上找到的技术来实现这一点,但它似乎根本没有触发按钮的onclientclick事件 这是我的密码 ASPX和JavascriptC# 条件confirButtonXtender,c#,asp.net,javascript,C#,Asp.net,Javascript,我试图根据页面中另一个字段的值绕过ConfirmButtonExtender 基本上,当用户单击我的“取消”按钮时,我通常会使用confirmbuttonextender和ModalPopupXtender显示一个modalpopup,以显示一个对话框,确认他们希望取消所做的任何更改并返回到上一屏幕。如果他们单击Yes,按钮的onclick事件将触发,调用codebehind中的一些代码,并将用户重定向到另一个页面。如果他们单击“否”,它将返回到同一页面,没有任何更改 但是,在某些情况下,我知道
<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>
是否确实要导航到此记录之外?
如果您自上次以来对记录进行了任何更改
你救了他们,他们就会失去
函数disableSubmit(){
if(document.getElementById(“”).checked){
返回checkSubmit();
}
否则{
返回true;
}
}
函数checkSubmit(){
var confirButton=$find('confirButtonextenderbtncancel');
confirmButton._displayConfirmDialog();
}
代码隐藏:
/// <summary>
/// Runs when the btnCancel button is clicked.
/// </summary>
protected void btnCancel_Click(object sender, EventArgs e)
{
Page.Response.Redirect("~/Searches/LookupCode/Default.aspx");
}
//
///单击btnCancel按钮时运行。
///
受保护的无效btnCancel\u单击(对象发送者,事件参数e)
{
Page.Response.Redirect(“~/Searches/LookupCode/Default.aspx”);
}
有没有关于我做错了什么的想法?编辑:确认PopupExtender不应该指向
btnCancel
。相反,它应该指向一个隐藏按钮(链接中的示例就是这样做的)
正如Chris所说,您不必拥有ConfirmButtonExtender和ModalPopupXtender(尽管这看起来像是一种绕过JavaScript confirm()函数在其“对话框-作为未来的一种技术注意:-”)中仅限于OK和Cancel按钮这一事实的方法) 如果您在代码中知道用户不会进行任何编辑(由您的cbAllowEdit控件证明),那么您应该能够禁用ConfirmButtonExtender:
ConfirmButtonExtenderbtnCancel.Enabled = false;
然后单击Cancel(取消)按钮将进入代码隐藏功能,而无需确认。此javascript可能会工作:
var confirmbtn = $find('ConfirmButtonExtenderID');
confirmbtn.enabled =false;
//ConfirmButtonExtenderID需要是ConfirmButtonExtender ID[:$]的名称。我使用modalpopupextender是因为我希望能够控制确认对话框的显示方式。我想在其中添加更多信息,在某些情况下,还会出现一个“评论”文本框,询问更多信息。也许还有什么我不明白的?啊,有道理。不过,我的第二部分仍然适用。你需要一个隐藏的按钮,就像这个例子一样。我昨天晚些时候终于发现了这个问题,最后做了这个。+1。啊,接得好。我不知道她已经知道她是否处于编辑模式。我只专注于客户端修复。
var confirmbtn = $find('ConfirmButtonExtenderID');
confirmbtn.enabled =false;