单击按钮时避免回发

时间:2011-08-31 07:16:04

标签: asp.net visual-studio gridview postback

我有搜索功能。如果搜索字符串为空并且用户单击“GO”,则不应发生gridview的回发,并且警报(如下面的代码中所述)应该被激活。

我的gridview位于更新面板中。下面是我写的逻辑,但它不起作用。

 protected void btnGo_Click(object sender, EventArgs e)
        {
            if (!txtSearchString.Text.Equals(string.Empty))
            {
                BinGrid();
                upnl1.update //update panel is updated here.
            }
            else
            {
                ScriptManager.RegisterStartupScript(this.upnl1, this.GetType(), "Search", "alert('Enter search text');", false);
                //upnlgvOpportinities.Update();
                //upnlAdmin.Update();
                return;
            }
        }

请帮忙!如果需要任何信息,请告诉我

4 个答案:

答案 0 :(得分:4)

这种逻辑是错误的。如果你想在第一时间避免回发,它应该使用javascript。

当文本框为空时,您的javascript会返回false,而当

时,true会返回{/ 1}}

<asp:button runat="server".... OnClientClick="return myfunction(); " />

您可以在myfunction()

中检查文本框是否为空

答案 1 :(得分:2)

如果您不希望向服务器发送请求(如果我理解您的需求正确),那么您需要一个客户端解决方案,即使用javascript处理按钮,并有条件地阻止回发。但是,您当前的代码是服务器端,并且在发布回发之后服务器上执行。

至于客户端,这是一种可行的方法。定义一个简单检查搜索框值的js函数,如果它为空则返回false。在按钮上单击只需调用此功能。如果单击处理程序返回false,则将停止进一步处理按钮单击并且不会发生回发:

function checkSearch() {
    var searchBox = document.getElementById('HereComesSearchBoxClientID');

    if (searchBox.value == '') {
        alert('Enter search text');
        return false;
    } else {
        return true;
    }
}

<asp:Button ID="SearchButton" runat="server" Text="GO" OnClick="ServerSideHandler" OnClientClick="checkSearch();" />

答案 2 :(得分:1)

用下面的代码行替换ScriptManager行。

ScriptManager.RegisterStartupScript(this.upnl1, this.GetType(), "Script", "alert('Enter search text');", true);

答案 3 :(得分:0)

@Madhur Ahuja的方式是正确的。扩大了一点。

HTML

<asp:Button ID="txtSearchString" runat="server" 
        OnClientClick="javascript:return CheckifEmpty(this);" />

的Javascript

function CheckifEmpty(objSearchBox) {
    //always trim, otherwise it will accept a string of spaces
    var isEmpty = objSearchBox.value.trim() == "";
    if (isEmpty) {
        alert('Enter search text');
    }
    return !isEmpty;
}
if (!String.prototype.trim) {
    String.prototype.trim = function() {
        return this.replace(/^\s*(\S*(?:\s+\S+)*)\s*$/, "$1");
    };
}