Как заставить принудительный пользовательский элемент управления jQuery оставаться после событий щелчка? - PullRequest
0 голосов
/ 11 мая 2010

У меня есть базовая страница, к которой я добавляю элемент управления загрузчиком, основанный на Bulk Uploader на c-sharpcorner.com, и этот элемент управления находится в блеклом jQuery div на основе yesdegisn

Bulk Uploader имеет два обработчика событий на стороне сервера для двух кнопок - Add и Remove. После нажатия этих кнопок исчезновение исчезнет, ​​и вы вернетесь к основной странице - если пользователю необходимо добавить больше файлов, это нежелательно. ArrayList файлов, добавленных в ListBox, сохраняется, но мне нужно щелкнуть ссылку «постепенное появление» (LinkButton 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>

LinkButton активирует затухание в 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);
        }
    }
}

1 Ответ

0 голосов
/ 11 мая 2010

Я предполагаю, что ваш элемент управления ASP.NET Bulk Uploader работает, выполняя обратную передачу на сервер, который обновляет страницу. Когда страница перезагружается, всплывающее окно находится в затененном состоянии по умолчанию.

Может существовать свойство Bulk Uploader, называемое чем-то вроде «AutoSubmit», которое можно установить в False, а затем в последующем отправить все пользовательские варианты файлов оптом.

Или вы можете заставить обработчик событий на стороне сервера загрузки поместить некоторые данные в страницу HTML, которые клиент JS может прочитать, и затем клиент JS может выяснить, что если страница была перезагружена из-за загрузки, то она исчезает диалог снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...