DevExpress AspxSpreadsheet Open 或 Document.LoadDocument 方法无法正常工作

DevExpress AspxSpreadsheet Open or Document.LoadDocument method is not working correctly

我需要任何 devexpress 开发人员或任何了解此问题的人对此问题的任何观点。

我有这两种方法:

第一个从缓存变量中获取数据并将其加载到电子表格文档中

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

我还有其他上传事件方法,我从文件中获取数据并将其加载到电子表格文档中

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

    }
}

Page_Load Spreadsheet.Open 函数工作正常。 UploadControl_FileUploadComplete 中的另一个没有。

页面在上传事件之后或之前不会回发或刷新,只是通过UploadControl_FileUploadComplete事件代码并执行。

对此的任何评论或解决方法都会有所帮助

ASPxUploadControl 在回调中上传文件。因此,可以在 ASPxUploadControl 的回调中更新其他控件。您需要处理客户端 FileUploadComplete event and perform a callback on ASPxSpreadsheet to open an uploaded file. To perform a callback, use the ASPxClientSpreadsheet.PerformCallback method. Then, on your server, handle the 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>