2017-02-14 4 views
0

У меня есть два элемента управления asp: a FileUpload и кнопка На FileUpload я добавляю свойства добавления и работает Я также хочу использовать кнопку для выполнения некоторых операций с кодовым кодом и THEN, чтобы вызвать загрузку файла, но файл всплывающее окно не появляетсяCall Uploadify from codebehind

для целей тестирования я пытался свести все на стороне клиента, но он все равно не будет работать ...

Вот мои три метки

<asp:Button Text="Browse" OnClick="Carica_File_Click" runat="server" ID="UploadButton" CssClass="Load_Button" align="center"/> 
<asp:Button Text="BrowseFromClient" OnClientClick="openfileDialog();" runat="server" ID="Button1" CssClass="Load_Button" align="center"/> 
<asp:FileUpload runat="server" ID="FileUploadMain" align="center" /> 

Клиент si де

<script type="text/javascript"> 
    $(window).load(
     function() { 
      $("#ContentPlaceHolderMain_FileUploadMain").uploadify({ 
       'swf': '../Scripts/uploadify.swf', 
       'cancelImg': '../images/uploadify-cancel.png', 
       'buttonText': 'Browse Files', 
       'uploader': '../FrontEnd/Upload.ashx<%=GetUploadParams()%>', 
       'folder': '', 
       'fileDesc': 'UPLOAD FILES', 
       'fileExt': '*.jpg;*.jpeg;*.gif;*.png;*.pdf;*.doc;*.docx', 
       'multi': true, 
       'auto': true, 
       'buttonImage': '<%=GetUploadFileUrl()%>', 
       'width': 217, 
       'removeTimeout': 1, 
       'removeCompleted': false, 
       'buttonClass': '', 
       'onUploadSuccess': function() { 
        location.reload(true); 
       } 

      }); 
     } 
    ); 
</script> 
<script> 
     function openfileDialog() { 
      $("#FileUploadMain").click(); 
     } 
</script> 

стороне сервера

Protected Sub Carica_File_Click(sender As Object, e As EventArgs) 
    Dim ClientID As String = FileUploadMain.ClientID 
    ScriptManager.RegisterStartupScript(Me, Page.GetType, "Script", "document.getElementById('#" & ClientID & "').click();", True) 
    ...code 
End Sub 

Где я ошибся?

ответ

0

В конце концов я сделал обходной путь:

для выполнения кода я вынужден уведомлений о транзакциях тег по делу файл был успешно закачанный которым затем обрабатывается на Page_Load на код позади

 $(window).load(
      function() { 
       $("#ContentPlaceHolderMain_FileUploadMain").uploadify({ 
        ....parameters 
        'onUploadSuccess': function (file, data, response) { 
         location.reload(true); 
         var ObjF = file.name; 
         __doPostBack('FileLoaded', ObjF); 
        } 
       }); 
      } 
     ); 

Хотя для клика, как я понял, невозможно для безопасности пользователя (поскольку клик загрузки, обработанный кодом или скрытой кнопкой, может быть опасным). Так что я спрятал кнопку добавления и надел на нее настраиваемую кнопку, которую я могу обрабатывать

   <div style="position:relative;" class="row box_upload"> 
        <div style="width:100%;"> 
         <asp:FileUpload runat="server" ID="FileUploadMain" align="center" /> 
        </div> 
        <asp:Button text="Browse" style="width:100%;height:100%;position:absolute;top:0;left:0;" runat="server" ID="UploadButton" return false;" ></asp:button> 
       </div> 

Недостатки в том, что с этим кликом i клик не может использоваться на кнопке, поскольку он накладывается щелчком объекта добавления, но я оставлю его, когда это будет необходимо (и с методом обратной передачи мне не нужно все остальное)