当 DevExpress ASPxCheckBox 更改时请求客户端确认

问题描述 投票:0回答:2

我正在尝试添加一个确认对话框,让用户确认对 ASPxCheckBox 的选中状态所做的更改。

服用1个
基于这个 DevExpress 支持中心问题我正在尝试以下代码:

<dx:ASPxCheckBox ID="ASPxCheckBox1" runat="server">
    <ClientSideEvents CheckedChanged="ConfirmChange" />
</dx:ASPxCheckBox> 

使用此 JavaScript:

function ConfirmChange (s, e) {
    console.log(s);
    console.log(e);
    return false; // For testing
    // return confirm(); // Should become this
}

我希望/期待

return false
位能够阻止这种改变,但它仍然发生了。我已经检查了控制台记录的参数,看看是否可以影响其中的任何内容,但看起来不像。我还阅读了
CheckedChanged
DevExpress 文档
,但它也没有说明我的目的。

服用2个
我也尝试过在后面的代码中执行此操作:

var checkbox = (ASPxCheckBox)myGridView.FindEditRowCellTemplateControl(myCol, "ASPxCheckBox1";
checkbox.Attributes.Add("onclick", "return confirm('You sure?')")

这还会弹出确认对话框,如果单击取消,则无法阻止更改。

服用3个
最后,根据此处早期答案之一的建议,我还尝试了验证路线:

<dx:ASPxCheckBox ID="ASPxCheckBox1" runat="server">
    <ClientSideEvents Validation="ConfirmChange" />
</dx:ASPxCheckBox> 

JavaScript:

function ConfirmChange (s, e) {
    e.isValid = confirm();
}

但是,这不会阻止恢复更改,但如果您在确认对话框中点击取消,则会出现验证错误。

所以,底线
如何在

ASPxCheckBox
发生更改之前注入客户端确认对话框?

javascript checkbox devexpress
2个回答
2
投票

您无法阻止

ASPxClientCheckBox.CheckedChanged
事件的更改,因为当编辑器的选中状态更改时,此事件会在客户端发生。您可以使用
ASPxClientCheckBox.GetChecked
方法和
ASPxClientCheckBox.SetChecked
方法恢复值。
这是例子:

<dx:ASPxCheckBox ID="ASPxCheckBox1" runat="server">
    <ClientSideEvents CheckedChanged="ConfirmChange" />
</dx:ASPxCheckBox> 

JavaScript:

function ConfirmChange (s, e) {
    console.log(s);
    console.log(e);

    //Save the checked state
    value = s.GetChecked();

    //Revert changes immediately
    s.SetChecked(!s.GetChecked());

    result = false; // For testing
    // result = confirm(); // Should become this

    if (result) {s.SetChecked(value);}
}

0
投票

聚会有点晚了,但我在后面的代码中使用 ClientSideEvents.ValueChanged 属性解决了类似的问题。

背后代码:

 var chkNormal = new ASPxCheckBox{ID = someID};
 chkNormal.ClientSideEvents.ValueChanged = "() => Change()";

JavaScript:

function Change() {
        // Do something
    }
© www.soinside.com 2019 - 2024. All rights reserved.