ASPXRichedit 无法将 byte[] 隐式转换为 System.IO.Stream
ASPXRichedit cannot implicity convert byte[] to System.IO.Stream
我正在使用 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;
});
}
在return编码。UTF8.GetBytes(rtfText);
当所有在线文档都使用 byte[] 打开控件中的文档时,我一直收到错误 'Cannot implicity convert byte[] to System.IO.Stream'。
会发生什么?为什么我的字节数组不被接受?
出现问题是因为 ASPxRichEdit.Open()
的第三个参数需要 return 类型的 System.IO.Stream
类型,如 this reference, but you're passing byte array with GetBytes()
中提供的:
public void Open(
string documentId,
DocumentFormat format,
Func<Stream> contentAccessorByStream // => requires return type of stream
)
要解决此问题,请尝试在 return 之前将该字节数组转换为流,如下例所示:
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#?
我正在使用 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;
});
}
在return编码。UTF8.GetBytes(rtfText);
当所有在线文档都使用 byte[] 打开控件中的文档时,我一直收到错误 'Cannot implicity convert byte[] to System.IO.Stream'。
会发生什么?为什么我的字节数组不被接受?
出现问题是因为 ASPxRichEdit.Open()
的第三个参数需要 return 类型的 System.IO.Stream
类型,如 this reference, but you're passing byte array with GetBytes()
中提供的:
public void Open(
string documentId,
DocumentFormat format,
Func<Stream> contentAccessorByStream // => requires return type of stream
)
要解决此问题,请尝试在 return 之前将该字节数组转换为流,如下例所示:
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#?