如何强制jQuery淡入用户控件在单击事件后保留?

时间:2010-05-11 16:09:02

标签: .net jquery upload

我有一个基本页面,我在c-sharpcorner.com上添加了基于Bulk Uploader的上传器控件,控件位于基于yesdegisn的jQuery-faded div

Bulk Uploader有两个服务器端事件处理程序,用于两个按钮 - 添加和删除。单击这些按钮后,淡入淡出消失并返回基本页面 - 如果用户需要添加更多文件,则这是不可取的。添加到ListBox的文件的ArrayList被维护,但我必须单击“淡入”链接(LinkBut​​ton id =“lnkDocumentUpload”)再次显示此窗口。

我还需要控制POST到UploadPost.aspx,它也不起作用。单击上载按钮(<asp:Button ID="btnUpload" runat="server" />)具有与上述相同的行为 - 淡入淡出消失,数据保留,无POST。我用

包围了控件
<form id="frmUpload" action="~/UploadPost.aspx">
...
    <asp:Button ID="btnUpload" runat="server" Text="Upload"/>
</form>

LinkBut​​ton通过

激活jQuery中的淡入淡出
$("#lnkDocumentUpload").click(function() {
    centerPopup();
    loadPopup();
});

MyUploader标记:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MyUploader.ascx.cs" Inherits="Controls.MyUploader" %>
<form id="frmUpload" action="~/UploadPost.aspx">
<table>
    <tr>
        <td style="width: 163px">
            <span style="font-size: 10pt; font-family: Verdana"><strong>
            Select file to upload:</strong></span></td>
        <td style="width: 324px">
            <asp:FileUpload ID="fUpload" runat="server" />&nbsp;<asp:Button ID="btnAdd" runat="server" Text="Add"
              OnClick="btnAdd_Click" /></td>
    </tr>
    <tr>
        <td style="width: 163px">
        </td>
        <td style="width: 324px">
            <asp:ListBox ID="lstFiles" runat="server" Width="324px"></asp:ListBox>
            </td>
    </tr>
    <tr>
        <td style="width: 163px">
        </td>
        <td style="width: 324px">
            <asp:Button ID="btnRemove" runat="server" Text="Remove" OnClick="btnRemove_Click" />
            &nbsp;<asp:Button ID="btnUpload" runat="server" Text="Upload"/></td>
    </tr>
    <tr>
        <td colspan="2">
            <asp:Label ID="lblMessage" runat="server" Font-Names="Verdana" Font-Size="Small"
              ForeColor="Red"></asp:Label></td>
    </tr>
</table> 

MyUploader codebehind:

public partial class MyUploader : System.Web.UI.UserControl
{

    protected static ArrayList arrFiles = new ArrayList(); // has to be static since Adding and then reusing

    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void btnAdd_Click(object sender, EventArgs e)
    {
        try
        {
            if (Page.IsPostBack)
            {
                arrFiles.Add(fUpload);
                lstFiles.Items.Add(fUpload.PostedFile.FileName);
            }
        }
        catch (Exception ex)
        {
            lblMessage.Text = "An error has occured while adding file" + ex.Message;
        }
    }

    protected void btnRemove_Click(object sender, EventArgs e)
    {
        if (lstFiles.Items.Count != 0)
        {
            arrFiles.Remove(fUpload);
            lstFiles.Items.Remove(lstFiles.SelectedItem.Text);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我猜测你的ASP.NET Bulk Uploader控件的工作原理是回发到服务器,刷新页面。当页面重新加载时,弹出窗口处于默认的淡出状态。

Bulk Uploader可能有一个名为“AutoSubmit”的属性,你可以设置为False,然后批量提交所有用户的文件选择。

或者,您可以让上传者的服务器端事件处理程序将一些数据放入客户端JS可以读取的页面HTML中,然后客户端JS可以确定如果页面由于上载而重新加载,则淡出对话框回来了。

相关问题