0

我拥有的是一个 ASP.NET 2.0 Web 应用程序,它允许用户上传 .CSV

html 输入类型是提交。

我想知道是否有一种方法可以在我的 onserverclick 方法发生之前更新输入下方的 UpdatePanel 以显示一点“处理”.gif。

我曾尝试在该事件的开头引用另一个事件以及其他方法,但我没有运气。据我了解,该方法需要在我的 UpdatePanel 刷新之前完成。

这是给你们的一些代码

          <div class=" content-div">
              <input type="file" id="File1" name="File1" runat="server" />
              Select file Type:
              <asp:DropDownList ID="ddlfileupload" runat="server">
                 <asp:ListItem>CSV</asp:ListItem>
              </asp:DropDownList>
           </div>

           <div class=" content-div">

              <input type="submit" id="Submit1" value="Upload File" runat="server" onserverclick="Submit1_ServerClick"
                 style="border-top-style: groove; border-right-style: groove; border-left-style: groove;
                 border-bottom-style: groove" />

              <asp:Label ID="Label6" runat="server" BorderColor="White" BorderStyle="None" Font-Bold="True"
                 Visible="False"></asp:Label>

                 <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
                    <ContentTemplate>
                        <asp:PlaceHolder ID="PlaceHolder1" runat="server" />
                    </ContentTemplate>
                 </asp:UpdatePanel>

以及代码背后的事件:

protected void Submit1_ServerClick(object sender, EventArgs e)
    {
        AddProcessGif();
        // Logic from submit button here that uploads .csv
    }

AddProcessGif() 是一种以编程方式添加我的 .gif 和内容的方法。它有效,我看到它着火了,但只有在我的上传完成之后,这违背了目的。

我这里没有写得很好的应用程序,而且我对 ASP.NET 还很陌生,所以我不确定如何有效地制作进度条或类似的东西。

任何意见,将不胜感激

4

1 回答 1

1

您可以从 javascript 调用 ac# 服务器端方法。您需要做的是在您的 aspx 页面中添加一个 scriptmanaget 并将 EnablePageMethods 设置为 true。

       <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager>

您的 C# 方法也必须是 [WebMethod] 之类的

[WebMethod]
public static string DoSomething(string str1, string str2)
{
    string result = "This is concatenation of " + str1 + " and " + str2 + "'.";
    return result;
}

然后在您的 aspx 页面中添加 javascript 函数以调用 C# 服务器端 DoSomething 方法

<head runat="server">
<title></title>
<script type="text/javascript">
    function DoSomthing() {
        var str1 = document.getElementById('<%=txtstr1.ClientID %>').value;
        var str2 = document.getElementById('<%=txtstr2.ClientID %>').value;
       //Here we call server side methode
        PageMethods.DoSomeThing(str1, str2, onSucess, onError); 
        function onSucess(result) {
            alert(result);
        }

        function onError(result) {
            alert('Something wrong.');
        }
    }
</script>

希望能帮助到你

于 2013-11-14T00:03:28.193 回答