Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 条件confirButtonXtender_C#_Asp.net_Javascript - Fatal编程技术网

C# 条件confirButtonXtender

C# 条件confirButtonXtender,c#,asp.net,javascript,C#,Asp.net,Javascript,我试图根据页面中另一个字段的值绕过ConfirmButtonExtender 基本上,当用户单击我的“取消”按钮时,我通常会使用confirmbuttonextender和ModalPopupXtender显示一个modalpopup,以显示一个对话框,确认他们希望取消所做的任何更改并返回到上一屏幕。如果他们单击Yes,按钮的onclick事件将触发,调用codebehind中的一些代码,并将用户重定向到另一个页面。如果他们单击“否”,它将返回到同一页面,没有任何更改 但是,在某些情况下,我知道

我试图根据页面中另一个字段的值绕过ConfirmButtonExtender

基本上,当用户单击我的“取消”按钮时,我通常会使用confirmbuttonextender和ModalPopupXtender显示一个modalpopup,以显示一个对话框,确认他们希望取消所做的任何更改并返回到上一屏幕。如果他们单击Yes,按钮的onclick事件将触发,调用codebehind中的一些代码,并将用户重定向到另一个页面。如果他们单击“否”,它将返回到同一页面,没有任何更改

但是,在某些情况下,我知道我的用户无法执行任何编辑(他们不允许),对于这些用户,我不想显示“您确定要离开吗?您将失去任何更改”对话框

我已经设置了一个名为“cbAllowEdit”的隐藏复选框字段,以指示是否允许用户编辑这些字段

我试图使用在上找到的技术来实现这一点,但它似乎根本没有触发按钮的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>

是否确实要导航到此记录之外?

如果您自上次以来对记录进行了任何更改 你救了他们,他们就会失去

函数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;