我的名字是Ed,我需要從ReportView加載圖像dinamic.How我能做到這一點嗎? 我工作Windows窗體,C#3.0和LINQ到SQL,我需要加載圖像到我的報告動態。將圖像動態加載到ReportView
謝謝。
我的名字是Ed,我需要從ReportView加載圖像dinamic.How我能做到這一點嗎? 我工作Windows窗體,C#3.0和LINQ到SQL,我需要加載圖像到我的報告動態。將圖像動態加載到ReportView
謝謝。
簡短的回答是,你不能這樣做,至少不是內置的報表查看器功能。
但是,如果您確定要執行此操作,則可以嘗試動態創建RDLC文件。如果您動態創建RDLC文件,則可以動態地將圖像添加到報告中。
你可以找到一些示例代碼,瞭解如何動態創建RDLC文件here。
這個答案根本不正確。正如Peter Tate的回答所顯示的那樣,這可以做到。 – 2010-02-02 04:43:47
我假設您使用的是C#中的Microsoft Report Viewer組件,並且您想要動態地將圖像添加到報表中。
這當然是可能的,你需要創建一個帶有byte []屬性的類來表示序列化的位圖。
class ReportImage {
public byte[] Image {get;set;}
// Other stuff here if you want...
}
設置此對象的位圖的每像素24位序列化版本的屬性(即保存位圖以一個MemoryStream,然後調用MemoryStream.ToArray())。您必須使用每像素24位,並且您保存到的格式必須爲爲BMP,這似乎是報表查看器中所必需的。
然後,您可以綁定到對象數據源(有關綁定到對象的詳細信息,請參閱MSDN documentation,另請參閱示例here)。使用圖像項目在報告中顯示圖像。
限制是報告中的圖像必須是固定的大小。您必須事先對圖像進行重新採樣以適應它們,或者,正如Jon所建議的那樣,爲報告動態創建RDLC文件。
This answer是非常有幫助的(它讓我過去了,在我的報告中有一些「破碎的圖像」框),但有點誤導。
嚴格來說,不是要求「圖像」(實際上是一個字節數組)是BMP格式。在一個測試項目中,我能夠從磁盤讀取jpeg文件(即File.ReadAllBytes(filename);)並將結果字節數組添加到「rptrow」列表中的byte []屬性(其中rptrow是一個表示報告表中一行的所有數據)。報告中的圖像的MIMEType設置爲「image/jpeg」,Source屬性爲「數據庫」。我還注意到,只要指定了某些東西(不是空白的),我所用的MIMEType就不重要了。
我很匆忙,所以我甚至沒有考慮檢查它必須是24bpp圖像的聲明。
簡體rptobj:
public class rptobj
{
public string FileName { get; set; }
public byte[] Photo { get; set; }
private List<rptobj> photos;
public List<rptobj> GetList()
{
if (photos == null)
{
photos = LoadPhotos();
}
return photos;
}
private List<rptobj> LoadPhotos()
{
var rslt = new List<rptobj>();
byte[] rawData;
var path = HttpContext.Current.Server.MapPath(@"~\images");
DirectoryInfo di = new DirectoryInfo(path);
FileSystemInfo[] fis = di.GetFileSystemInfos("*.jpg");
foreach(var fi in fis){
rawData = File.ReadAllBytes(string.Format(@"{0}\{1}", path, fi.Name));
rslt.Add(new rptobj() { Photo = rawData, FileName = fi.Name });
}
return rslt;
}
}
你的問題是可怕的格式化。爲什麼你把它全部放在「代碼」標籤中? – 2010-02-02 04:43:15