如何避免asp.net中每个服务器端事件的页面刷新?

时间:2011-11-18 08:47:07

标签: javascript asp.net html

我在asp.net中设计了一个网页。在那个页面中我放置了html控件,就像<a>&amp; <div>。我写了一个java脚本函数,当我点击<div>标签时隐藏了<a>。它的工作正常。但是,当我点击asp.net按钮时,页面刷新再次发生。它正在加载我以前的页面设计。我在设计时设置了display:none的{​​{1}}。所以它在发生任何其他服务器端事件时再次隐藏我的<div>。我不想让它发生。

Javascript功能 -

<div>

html代码是 -

<script language="javascript" type="text/javascript">
       function toggle5(showHideDiv, switchTag) {
           try {
               '<%Session["temp"] = "'+more+'"; %>';
               var ele = document.getElementById(showHideDiv);
               var imageEle = document.getElementById(switchTag);
               if (ele.style.display == "block") {
                   ele.style.display = "none";
                   imageEle.innerHTML = 'More';
               }
               else {
                   ele.style.display = "block";
                   imageEle.innerHTML = 'Less';

               }
           }
           catch (err) {
               alert("Error");
           }
       }
</script>

Checkbox的C#.net代码 -

<div id="divSearch" style="float:left;height:100%;width:100%;">
<span style="float:right;height:27px;"><a id="displayText" href="#" onclick="javascript:toggle5('toggleText', 'displayText');">More</a></span>
</div>
<div id="toggleText" style="display:none;height:100%;width:100%;">
<div id="divCalls" style="width:24%;float:left;height:30%;">
<span style="float:left;width:100%;color:#3b5998;">
            <asp:CheckBox ID="chkNoCall" runat="server" Text="No call made in " 
        AutoPostBack="True" oncheckedchanged="chkNoCall_CheckedChanged"/>
    <asp:TextBox ID="txtNoCall" runat="server" Width="12%" Enabled="False"></asp:TextBox><span> days</span></span>
</div>
</div>

如何解决这个问题?

感谢

4 个答案:

答案 0 :(得分:3)

在按钮点击事件中,返回false。这样可以防止回发。

答案 1 :(得分:3)

将此数据放在updatepanel中,如下所示

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
    <span style="float:left;width:100%;color:#3b5998;">
            <asp:CheckBox ID="chkNoCall" runat="server" Text="No call made in " 
        AutoPostBack="True" oncheckedchanged="chkNoCall_CheckedChanged"/>
    <asp:TextBox ID="txtNoCall" runat="server" Width="12%" Enabled="False"></asp:TextBox><span> days</span></span>

    </ContentTemplate>
    </asp:UpdatePanel>

希望这个帮助

答案 2 :(得分:1)

使用ajax获取服务器端数据,而不是提交页面。

答案 3 :(得分:0)

请尝试以下方法之一:

  1. 从组件中移除runat=serverrunat=Server的组件始终提交表单。
  2. 使用标准html控件
  3. 使用javascript进行html控件
  4. 它是具有autopostback功能的组件; make autopostback=false