2016-03-30 6 views
0

私は、この問題について、devexpress開発者またはそれについて知ることができる誰かから、この問題を回避するための視点が必要です。DevExpress AspxSpreadsheet OpenまたはDocument.LoadDocumentメソッドが正しく動作しません

私はこの二つの方法があります:最初のものは、それが表計算ドキュメント

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     documentId = (String)Session["id"]; 
     Spreadsheet.Open(documentId, DocumentFormat.Xlsx,() => 
              { 
               return (byte[])Cache[documentId]; 
              }); 
     Cache.Remove(documentId); 
     Session.Remove("id"); 
    } 
} 

にキャッシュ変数と負荷からデータを取得し、私は私が手にアップロードイベントのため、この他の方法を持っている

をファイルからのデータとのPage_Load Spreadsheet.Open機能が正常に動作しますスプレッドシート文書

protected void UploadControl_FileUploadComplete(object sender, DevExpress.Web.FileUploadCompleteEventArgs e) 
{ 
    if (e.IsValid) 
    { 
     fileContent = e.UploadedFile.FileBytes; 
     documentFormat = GetFileExtension(e.UploadedFile.FileName); 
     documentId = Guid.NewGuid().ToString(); 

     if (documentFormat != DocumentFormat.Undefined) 
     { 
      Spreadsheet.Open(documentId, documentFormat,() => 
              { 
               return fileContent; 
              }); 
     } 

    } 
} 

にロードします。 UploadControl_FileUploadCompleteのもう1つはありません。

アップロードイベントの前後にページがポストバックまたはリフレッシュされず、UploadControl_FileUploadCompleteイベントコードが実行されて実行されます。

は、この上の任意のコメントや問題を回避するには、コールバックの

答えて

4

ASPxUploadControlアップロードファイル参考になります。したがって、他のコントロールはASPxUploadControlのコールバックで更新することができます。クライアント側のFileUploadCompleteイベントを処理し、アップロードされたファイルを開くためにASPxSpreadsheetでコールバックを実行する必要があります。コールバックを実行するには、ASPxClientSpreadsheet.PerformCallbackメソッドを使用します。その後、サーバー上でASPxSpreadsheet.Callbackイベントを処理してドキュメントを開きます。

<form id="form1" runat="server"> 
    <div> 
     <dx:ASPxSpreadsheet ID="ASPxSpreadsheet1" ClientInstanceName="Spreadsheet1" runat="server" WorkDirectory="~/App_Data/WorkDirectory" OnCallback="ASPxSpreadsheet1_Callback"></dx:ASPxSpreadsheet> 
     <dx:ASPxUploadControl ID="ASPxUploadControl1" runat="server" UploadMode="Auto" Width="280px" OnFileUploadComplete="ASPxUploadControl1_FileUploadComplete" ShowUploadButton="True"> 
      <ClientSideEvents FileUploadComplete="function(s, e) { OpenDocument(e.callbackData); }" /> 
     </dx:ASPxUploadControl> 
    </div> 
</form> 


const string UploadDirectory = "~/UploadedFiles/"; 
protected void ASPxUploadControl1_FileUploadComplete(object sender, DevExpress.Web.FileUploadCompleteEventArgs e) { 
    if (e.IsValid) { 
     string resultExtension = Path.GetExtension(e.UploadedFile.FileName); 
     string resultFileName = Path.ChangeExtension(Path.GetRandomFileName(), resultExtension); 
     string resultFileUrl = UploadDirectory + resultFileName; 
     string resultFilePath = MapPath(resultFileUrl); 
     e.UploadedFile.SaveAs(resultFilePath); 
     e.CallbackData = resultFilePath; 
    } 
} 

protected void ASPxSpreadsheet1_Callback(object sender, DevExpress.Web.CallbackEventArgsBase e) { 
    ASPxSpreadsheet1.Open(e.Parameter); 
} 

<script type="text/javascript"> 
    function OpenDocument(data) { 
     debugger 
     Spreadsheet1.PerformCallback(data); 
    } 
</script> 
+0

私はすでにdevexpressウェブサイトから私のものを持っていましたが、あなたの答えはありがとう、それは基本的に同じようなアプローチでした。誰かがそれを必要とするかもしれない場合の答えは次のとおりです:https://www.devexpress.com/Support/Center/Question/Details/T362124 –

関連する問題