从服务器端C调用Javascript函数#

从服务器端C调用Javascript函数#,javascript,c#,jquery,asp.net,gif,Javascript,C#,Jquery,Asp.net,Gif,我创建了一个显示清单列表的报告。用户可以通过清单编号搜索此列表。当代码运行搜索时,我显示一个Gif: 但是一旦搜索完成,这个Gif不会消失。我可以看到显示的是正确的记录,因此搜索结束,但Gif仍保留在屏幕上 单击搜索按钮时调用该函数 <asp:Button runat="server" CssClass="btnSearch loading" ID="btnSearch" Text="Search" OnClick="btnSearch_Click" OnClientClick="Sh

我创建了一个显示清单列表的报告。用户可以通过清单编号搜索此列表。当代码运行搜索时,我显示一个Gif:

但是一旦搜索完成,这个Gif不会消失。我可以看到显示的是正确的记录,因此搜索结束,但Gif仍保留在屏幕上

单击搜索按钮时调用该函数

 <asp:Button runat="server" CssClass="btnSearch loading" ID="btnSearch" Text="Search" OnClick="btnSearch_Click" OnClientClick="ShowLoadingGif()" ToolTip="Search" />    

<div id="dvLoading">
        <table>
            <tr>
                <td id="tdLoadingSave"><img src="/images/loading.gif" alt="Loading..." title="Loading..." /></td>
            </tr>
        </table>            
    </div>

    function ShowLoadingGif() {
                closefiltermenu();
                $("#tdLoadingSave").html($("#tdLoadingSave").html() + "<br/> Please wait, manifest list is loading");
                $('#dvLoading').fadeIn("500");
        }

 function CloseLoadingGif() {
        $('#dvLoading').fadeOut("500");
    }

函数ShowLoadingGif(){
closefiltermenu();
$(“#tdLoadingSave”).html($(“#tdLoadingSave”).html()+“
请稍候,正在加载清单列表”); $('dvLoading').fadeIn(“500”); } 函数CloseLoadingGif(){ $('dvLoading')。淡出(“500”); }
然后从另一个函数运行搜索:

 protected void Search()
    {
        string Field = ddlSearchBy.SelectedValue;
        string SearchString = txtSearchBy.Text;

        string[] SearchFields = null;
        string[] SearchStrings = null;

        if (!string.IsNullOrEmpty(SearchString) && Field != "null")
        {
            SearchFields = new string[] { Field };
            SearchStrings = new string[] { SearchString };
        }

        List<lookupManifestAnalysis> main = lookupManifestAnalysis.SearchManifestItems(Company.Current.CompanyID,
                SearchStrings,
                SearchFields);

        gvResults.DataSource = main;
        gvResults.DataBind();

        udpResults.Update();

        ClientScript.RegisterStartupScript(GetType(), "Search", "CloseLoadingGif();", true);

    }
受保护的无效搜索()
{
字符串字段=ddlSearchBy.SelectedValue;
string SearchString=txtSearchBy.Text;
字符串[]SearchFields=null;
string[]SearchStrings=null;
如果(!string.IsNullOrEmpty(SearchString)&&Field!=“null”)
{
SearchFields=新字符串[]{Field};
SearchStrings=新字符串[]{SearchString};
}
List main=lookupManifestAnalysis.SearchManifestItems(Company.Current.CompanyID,
搜索字符串,
搜索字段);
gvResults.DataSource=main;
gvResults.DataBind();
udpResults.Update();
RegisterStartupScript(GetType(),“Search”,“CloseLoadingGif();”,true);
}

但搜索结束后如何停止Gif显示?

在服务器端ASP中执行代码时,不应使用客户端函数显示或隐藏元素。相反,尝试使用.Net中的Ajax控件

您将需要使用AJAX进度控制。请看一看:

如果您正在处理asp.net UpdatePanel和UpdateProgress,请使用以下代码:

ScriptManager.RegisterStartupScript(myUpdatePanelID,myUpdatePanelID.GetType(),"CloseLoadingGif", "CloseLoadingGif();", true); 

$('dvLoading').fadeOut(“500”)搜索结束时(ajax响应或任何您用来知道何时结束的信息)。@pistou搜索在另一个受保护的函数void search()中运行。不在jquery中。那么我该如何停止gif的显示呢?在
Search()
函数中使用
ClientScript.RegisterClientScriptBlock
。@waqarhmed我添加了`ClientScript.RegisterClientScriptBlock(GetType(),“Search”,“CloseLoadingGif();”,true);`但是它仍然不能与
ClientScript.RegisterStartupScript一起使用
ScriptManager.RegisterStartupScript(myUpdatePanelID,myUpdatePanelID.GetType(),"CloseLoadingGif", "CloseLoadingGif();", true);