【问题标题】:how to do not postback button click如何不回发按钮单击
【发布时间】:2023-04-02 19:33:02
【问题描述】:

我想防止这种现象发生......

点击按钮时的回发

我想在单击按钮时执行结果并阻止屏幕刷新。

<asp:Button ID="DomainSeachButton" runat="server" Text="search" 
            OnClick="btnDomainSearch_Click" OnClientClick="onMySearch();" Width="69px" /> 
function onMySearch() {
    // __doPostBack("DomainSeachButton", "client");
    var r = confirm("Press a button!")
    if (r==true)
    {
         alert("You pressed OK!")
         return true;
    }
protected void btnDomainSearch_Click(object sender, EventArgs e)
{

    if (_cDBConnect.IsValidDBInfo() == true)
    {
        string sql = string.Format("select * from tb_licensekey_storages where cert_domain_name like '%{0}%';", txtSearchDomain.Text.Trim());

        var da = new SQLiteDataAdapter(sql, _cDBConnect.GetConnectionString());

        DataTable dt = new DataTable();

        da.Fill(dt);
        gridViewDBInfo.DataSource = dt;
        gridViewDBInfo.DataBind();
    }
}

【问题讨论】:

  • 不要使用asp:Buttoninput type=submit
  • 什么意思?您的意思是只使用“按钮”还是“提交”?
  • 一切都用一个表单包裹起来(因此得名 webforms)。所以任何按钮,linkbutton,submit都会触发一个表单post(回发)
  • 但是如何使用那种按钮??

标签: asp.net html


【解决方案1】:

您可以使用 ASP Control UpdatePanel 轻松实现此目的,它实际上不会刷新整个页面,而是刷新页面的选定内容,例如:

<asp:ScriptManager ID="MainScriptManager" runat="server" />
<asp:UpdatePanel ID="updtpnl" runat="server">
  <ContentTemplate>
    <asp:Button
      ID="DomainSeachButton"
      runat="server"
      Text="search"
      OnClick="btnDomainSearch_Click"
      OnClientClick="onMySearch();"
      Width="69px"
      AutoPostBack="true"
    />
    <asp:GridView ID="GridView1" runat="server"></asp:GridView>
  </ContentTemplate>
  <Triggers>
    <asp:AsyncPostBackTrigger ControlID="DomainSeachButton" EventName="Click" />
  </Triggers>
</asp:UpdatePanel>

【讨论】:

  • 应该同时使用UpdatePanel和AutoPostBack吗?单次使用“AutoPostBack = false”回发发生。例如)&lt;asp:Button ID="Button2" runat="server" Text="Button22222222" AutoPostBack="fasle" &gt;&lt;/asp:Button&gt; 但在使用 UpdatePanel 和 AutoPostBack = false 时没有发生回发。
  • 是的,当您将 postback 设置为 true 时,它​​会刷新内容区域而不是整个页面,否则什么都不会改变。
【解决方案2】:

尝试将您的 btnDomainSearch_Click 更改为

$("#btnDomainSearch_Click").click( function(e){
    e.preventDefault();

    //Whatever
})

【讨论】:

    【解决方案3】:

    您可以在特定按钮中使用AutoPostBack="false"

    如果AutoPostBack 设置false 它不会向服务器发送请求,否则它会向服务器发送请求。

    <asp:Button ID="DomainSeachButton" runat="server" Text="search" AutoPostBack="false" OnClick="btnDomainSearch_Click" OnClientClick="onMySearch();" Width="69px" />
    

    更多信息请阅读本文More Details

    【讨论】:

    • 使用 AutoPostBack = "false" 时发生回发。当使用 UpdatePanel 和 AutoPostBack = "false" 时,回发没有发生。但你的评论谢谢
    猜你喜欢
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多