【问题标题】:Get variable & keep changes after postback回发后获取变量并保持更改
【发布时间】:2011-09-27 15:32:04
【问题描述】:

此问题与:Hide div on clientside click

我遇到的问题是,在来自 asp.net 的回发事件发生后 onClick 任何客户端更改已重置,我如何才能保留我正在进行的客户端更改。

第二个问题如何从后面的代码中获取变量并将其传递到我的 javascript 以执行比较。

HTML:

    <div runat="server" id="someDiv1" enableviewstate="true" >
        <asp:LinkButton OnClientClick="Show_Hide_Display()" 
                        ID="lbtnDiv1" 
                        runat="server" 
                        CausesValidation="true" 
                        OnClick="lbtn_onClickServer">
        </asp:LinkButton>
    </div>

    <div runat="server" class="tick" id="div2" style="display:none;" enableviewstate="true">
    </div>

Javascript:

<script type="text/javascript">

function Show_Hide_Display() {

    var div1 = document.getElementById("<%=someDiv1.ClientID%>");
    var div2 = document.getElementById("<%=div2.ClientID %>");

        if (div1.style.display == "" || div1.style.display == "block") {
            div1.style.display = "none";
            div2.style.display = "block";
        }
        else {
            div1.style.display = "block";
            div2.style.display = "none";
        }
}    

</script>

OnClick 事件会引起应有的回发,在这种情况下,它会检查用户选择的用户名是否可用。

如果可用,则显示勾号,如果不是错误。

我得到了错误,正在尝试在客户端对刻度进行编程。

所以 OnClientClick 我可以在一些文本和刻度之间切换。所以我需要:

  • 从后面的代码中获取布尔结果
  • 回发后保持勾选(如果用户名可用)

我快到了,但不能完全弄清楚最后两点。

【问题讨论】:

  • 请不要在标题中添加“C# Asp.Net Javascript”之类的内容。这就是标签的用途。如果我必须在进入重点之前忽略前三个单词,你只会成功地让你的标题难以理解。
  • 所以我在代码周围添加了更新面板,这会停止实际的回发并创建部分回发,所以现在我可以在后面的代码中进行切换?
  • @JohnSaunders +1 您的评论感谢您的建设性批评。 :) 我以后会避免的。

标签: c# javascript asp.net html


【解决方案1】:

如果您在页面中使用 UpdatePanel,并假设您尝试切换的 div 不在控制范围内,您始终可以在部分回发中注入 javascript:

例如喜欢在部分回发时执行的按钮单击事件上,调用ScriptManager.RegisterClientScriptBlock() --> How to retain script block on a partial postback?

或者,您可以附加一个结束请求处理程序。这是一些应该在部分回发之后运行的 javascript。 --> ASP.NET Register Script After Partial Page Postback (UpdatePanel)

【讨论】:

  • 我不需要做任何事情,然后使用我以前没有做的 UpdatePanel。谢谢你的回答。
【解决方案2】:

这两个问题的答案在于检查从后面的代码发送的布尔值。

1-----.in 代码隐藏 C#

protected void Page_Load(object sender, System.EventArgs e) {

var linkbtn = (Button)Page.FindControl("lbtnDiv1");

linkbtn .Attributes.Add("onClick", "Show_Hide_Display('" + parameter+ "')");

}

2-------改变你的javascript

函数 Show_Hide_Display(参数)

{

如果(参数=='真') {

----你的逻辑---

}

其他

{

----你的逻辑

}

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多