1

我想这样做但在 asp.net 中。我将如何在 asp.net/后面的代码中编写这个?我已经有了

protected void chkBox_CheckedChanged(object sender, EventArgs e)
{
    if (chkBox.Checked){}
    else{}
}

<asp:Checkbox ID="chkBox" AutoPostBack="True" runat="server"
      onCheckedChanged="chkBox_CheckedChanged" />

所以我需要帮助填写其余部分。不过说真的,非常感谢!

更新 2: 此方法有效,但消息/div 显示的时间不够长,无法阅读文本。发现是因为AutoPostBack="true"。AutoPostBack 完成后如何调用事件(我猜这就是解决问题所需要的)?

function displayDiv(checkbox) {
            if (checkbox.checked) {
                $("#message1").stop(true, true).show().fadeOut(10000);
                $("#message2").hide();
            }
            else {
                $("#message1").stop(true, true).hide();
                $("#message2").stop(true, true).show().fadeOut(10000);
            }
        }


<asp:CheckBox ID="chkNotifyMe" AutoPostBack="True" runat="server"   OnCheckedChanged="chkNotifyMe_CheckedChanged" onclick="displayDiv(this)" /> 
<div id="message1" class="message" ><span>Successfully <small></small></span></div><br />
<div id="message2" class="message" ><span>Removed<small></small></span></div>

(所有的CSS都是一样的)

如此接近,我可以品尝到它:D再次感谢!

最终解决方案 好吧,我将它添加到我的页面以通过 jQuery 调用 AutoPostBack 并在它发布后显示我的消息

function pageLoad() {
            <%# autoLaunchJS %>
             $("#chkNotifyMe").click(chkNotifyMe_clicked);
        }
function chkNotifyMe_clicked(){
    var add = $get("chkNotifyMe").checked == true;
    PageMethods.WishList(add, <%#ID%>, OnSucceeded, OnFailed);
    }

    function OnSucceeded(){
        refreshStartPage();
        if($get("chkNotifyMe").checked){
                    $("#messageSuccess").stop(true, true).show().fadeOut(5000);
                    $("#messageRemove").hide();
        }
        else{
            $("#messageSuccess").stop(true, true).hide();
            $("#messageRemove").stop(true, true).show().fadeOut(5000);
            }
    }
4

2 回答 2

2

对于服务器控件,您可以同时拥有客户端代码和服务器逻辑。如果该 div 的显示是您计划做的全部,那么它是纯视图逻辑,它肯定与 javascript 和回发到服务器并刷新视图有关,这将是浪费。

你可以稍微改变你的javascript来做到这一点

function displayDiv(checkBox) {
        if (checkBox.checked) {
                            $("#message1").stop(true,true).show().fadeOut(4000);
            $("#message2").hide();
        }
        else {
            $("#message1").stop(true,true).hide();
            $("#message2").stop(true,true).show().fadeOut(4000);
        }

    }

<asp:Checkbox ID="chkBox" AutoPostBack="True" runat="server"
      onCheckedChanged="chkBox_CheckedChanged" onclick="displayDiv(this)" />
于 2011-05-04T18:58:30.087 回答
1

使用该 css 创建一个标签

<asp:Label id="lblChkchnged" runat="server" CssClass="message" Visible="False" />

然后在您的检查更改事件中设置代码

lblChkchnged.visible = true;
lblChkchnged.text = chkBoc.Checked ? "Checked" : "Unchecked";

虽然真的为什么不把它作为客户电话,除非你需要做更多的事情?

于 2011-05-04T18:56:56.490 回答