【问题标题】:How can I force a jQuery faded-in user control to remain after click events?如何在单击事件后强制保留 jQuery 淡入用户控件?
【发布时间】:2010-05-11 16:09:01
【问题描述】:

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

批量上传器有两个用于两个按钮的服务器端事件处理程序——添加和删除。单击这些按钮后,淡入淡出消失,您回到基本页面——如果用户需要添加更多文件,这是不可取的。添加到 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 代码隐藏:

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);
        }
    }
}

【问题讨论】:

    标签: .net jquery upload


    【解决方案1】:

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

    可能有一个名为“AutoSubmit”的批量上传器属性,您可以将其设置为 False,然后批量提交所有用户的文件选择。

    或者,您可以让上传者的服务器端事件处理程序将一些数据放入客户端JS可以读取的页面HTML中,然后客户端JS可以判断页面是否由于上传而重新加载,然后淡出对话框重新进入。

    【讨论】:

    • 我猜回发是由 OnClick 处理程序自动完成的。否则控件不是很复杂(请参阅编辑),因此 AutoSubmit 属性没有运气。客户端 JS 如何判断页面是否因上传而重新加载?
    • 一种(相当老套的)方法是拥有一个名为hdnKeepShowingDialogHidden 控件,其默认Value"",并设置btnAdd_ClickbtnRemove_Click 处理程序@987654327 @。然后在客户端上有类似$(document).ready(function() {if ($("#hdnKeepShowingDialog").val()) { centerPopup(); loadPopup(); }})
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 2020-12-21
    相关资源
    最近更新 更多