【问题标题】:ASPXRichedit cannot implicity convert byte[] to System.IO.StreamASPXRichedit 无法将 byte[] 隐式转换为 System.IO.Stream
【发布时间】:2019-05-15 09:06:46
【问题描述】:

我正在使用 Devexpress 控件:aspxichedit 以下源代码: https://github.com/DevExpress-Examples/how-to-use-aspxrichedit-to-edit-rtf-data-in-aspxgridviews-editform-t260978/blob/15.1.5%2B/CS/Default.aspx.cs

在代码处:

protected void re_Init(object sender, EventArgs e) {
    ASPxRichEdit richEdit = sender as ASPxRichEdit;
    GridViewEditItemTemplateContainer container = richEdit.NamingContainer as GridViewEditItemTemplateContainer;

    string documentID = GetDocumentID(container.Grid);
    if (!OpenedCanceledDocumentIDs.Contains(documentID)) {
        OpenedCanceledDocumentIDs.Add(documentID);
    }

    if (container.Grid.IsNewRowEditing) {
        richEdit.DocumentId = documentID;
        return;
    }

    //for text in db
    string rtfText = container.Grid.GetRowValues(container.VisibleIndex, "RtfContent").ToString();

    //for binary in db
    //byte[] rtfBinary = (byte[])container.Grid.GetRowValues(container.VisibleIndex, "RtfContent");

    richEdit.Open(documentID, DocumentFormat.Rtf, () => {
        //for text in db
        return Encoding.UTF8.GetBytes(rtfText);

        //for binary in db
        //return rtfBinary;
    });
}

在返回时 Encoding.UTF8.GetBytes(rtfText);

当所有在线文档都使用 byte[] 在控件中打开文档时,我不断收到错误消息“无法将 byte[] 隐式转换为 System.IO.Stream”。

会发生什么?为什么我的字节数组不被接受?

【问题讨论】:

    标签: c# stream devexpress byte


    【解决方案1】:

    出现问题是因为ASPxRichEdit.Open() 的第三个参数需要System.IO.Stream 类型的返回类型,如this reference 中提供的那样,但是您传递的是带有GetBytes() 的字节数组:

    public void Open( 
       string documentId,  
       DocumentFormat format,  
       Func<Stream> contentAccessorByStream // => requires return type of stream
    )
    

    要解决此问题,请尝试将该字节数组转换为流,然后再返回,如下例所示:

    richEdit.Open(documentID, DocumentFormat.Rtf, () => {
        //for text in db
        var byteArray = Encoding.UTF8.GetBytes(rtfText);
        var stream = new MemoryStream(byteArray); // convert to stream
    
        return stream;
    });
    

    相关问题:

    How do I convert struct System.Byte byte[] to a System.IO.Stream object in C#?

    【讨论】:

      猜你喜欢
      • 2018-09-05
      • 2018-07-06
      • 2012-04-12
      • 2017-12-09
      • 2012-07-01
      • 2021-12-02
      • 1970-01-01
      • 2020-07-03
      • 2012-11-01
      相关资源
      最近更新 更多