2015-09-02 20 views
8

AsyncFileUpload nie działa wewnątrz Listview Insert, Edit Itemtemplate i EmptyData Template.AsyncFileUpload Inside Listview Insert, Edit Itemtemplate i EmptyData Template nie zadziała

Powyżej jest moje Funkcje stronie klienta

function AttachmentUploadSuccessful() { 
    debugger; 
    var textError = $(".AttachmentError").text(); 
    if (textError.length > 0) { 
     var text = $(".AttachmentError"); 
     text.innerText = text.textContent = textError; 
     sender._onError(textError); // it will raise the OnClientUploadError event 
     return; 
    } else { 

     //alert(" File attachment is uploaded successfully."); 
     //CODE TO REMOVE FILE AND BACKGROUND COLOR OF FILE UPLOADER 
     $('.ModelBackgroundforCreateItem').hide(); 
     $('.PopupPanel').hide(); 
     var UploadControls = $('#<%= FileUpload.ClientID %> :input'); 
     UploadControls.each(function() { 

      //$(this).val(""); 
      $(this).css('background-color', '#fff'); 
     }); 

     //Updating Update panel by clicking button 
     $(".RefreshList").click(); 
    } 
} 

function AttachmentUploadFailed() { 

    alert("An error occured while uploading File Attachment. "); 
} 

Markup w pliku .aspx

<asp:ListView ID="ListView2" runat="server"> 
    <EmptyDataTemplate> 
    <table class="fileUpload" runat="server" id="FileUploadID"> 
       <tr> 
        <td> 
         <div style="width: 350px; overflow-x: hidden;"> 
          <asp:AsyncFileUpload runat="server" ID="FileUpload" ThrobberID="Throbber" OnClientUploadError="AttachmentUploadFailed" 
           OnClientUploadComplete="AttachmentUploadSuccessful" UploaderStyle="Traditional" UploadingBackColor="" Style="display: inline-block; margin-top: 5px;" 
           OnUploadedComplete="FileUpload_UploadedComplete"> 
          </asp:AsyncFileUpload> 
         </div> 
        </td> 
        <td style="width: 30px"> 
         <asp:Image ID="Throbber" ImageUrl="~/Image/AttachmentLoading.gif" Style="display: None; width: 20px;" runat="server" /> 
         <br /> 
        </td> 
       </tr> 
     </table> 
     </EmptyDataTemplate> 
</asp:ListView> 

Próbuje załadować plik Client Side Event OnClientUploadError nazywany jest coraz nie jest w stanie zrozumieć, dlaczego daje błąd. to samo przesyłanie pliku na prostej stronie i wewnątrz panelu Aktualizacja działa, ale w widoku listy wyświetla błąd klienta. Przejść przez powyższy problem z linkiem, nie otrzymując dokładnej odpowiedzi, proszę mi pomóc.

How to find Ajaxfileupload control inside Listview When in Editmode

AsyncFileUpload within EditItemTemplate of ListView

+0

Czy robisz wszystko w FileUpload_UploadedComplete –

+0

Tak. Wykonuję wywołanie bazy danych, aby zapisać załącznik i pobrać identyfikator załącznika i zapisać go na stronie, która będzie używana w momencie przesyłania. – Liquid

+0

czy * ma * być w panelu aktualizacji? Wiem, że normalna kontrola przesyłania nie działałaby, ale powiedziałeś, że to robi. pełen zdumienia. Nigdy nie użyłem AsyncFileUpload. – wazz

Odpowiedz

2

Widzę dwa problemy w kodzie udostępnionym:

  1. tej linii kodu: var UploadControls = $('#<%= FileUpload.ClientID %> :input')
  2. A ty nie posiada nieruchomość w ClientIDMode Twój znacznik, czyli Inherit

Te dwa problemy mają to samo pochodzenie: używasz AsyncFileUploader wewnątrz ListView, więc na Twojej stronie będzie więcej niż jeden element z identyfikatorem FileUpload.

Więc najpierw trzeba zmienić deklarację funkcji do:

function AttachmentUploadSuccessful(sender, e) { // then you can get the sender 

A potem, aby dostać się input, będziesz używać:

var UploadControls = $(sender._inputFile); 

Wreszcie, aby naprawić 2nd problem, musisz zmienić właściwość ClientIDMode na AutoID, aby AsyncFileUploader mógł poprawnie znaleźć swoich przywoływanych członków klienta.