您的注册号是 6275350665
您的新密钥是 AAP5GKS0000GBB100C9
这是9.2的license key :
AVS50-81SG00S-G61002U 1236731231
9999999991
0019250903
0004400007
1112411119
通常,我们在开发一个项目时,希望把所有的工程都统一地放到解决方案目录之下,把它们组织到VSS上时,目录结构也是如此。
但是,当我们在一台新的机器上从VSS上获取了所有的源代码目录及文件后,并将对应的ASP.NET工程所在的目录设定为IIS虚拟目录,在打开解决方案时,总是会提示我们虚拟目录已经存在,并且会自动给一个建议的重命名。这时我们通常的做法有可能是从解决方案中移除这个工程,然后重新将已经存在的工程添加进来,使用非常的不方便。
虽然原因我现在还不知道,不过经过多次偿试,总算找到了一个解决方法,赶紧共享给大家,不免有些贻笑大方哦。
解决步骤:
当然,这种方法只对连接到VSS服务器打开工程时有效,对于断开连接,可能是无效的。如果你直接把ASP.NET工程文件放到虚拟目录的根目录下,有可能也不会出现这样的问题,但我们的所有代码都不是统一地存在于解决方案所在的目录下了。
如何解决?
由于这方面很难找到比较详细的文档说明,以下是自己通过试控而找到的方法,以供参考:
这种方式,可以在更新了DataSet架构后,而不用破坏原来报表中已经存在的设计,当然原来某个字段已经被删除了的情况除外了!
--End--
前段时间,Accounting 项目内需要在水晶报表中动态显示任意格式的图片。但是,水晶报表只支持OleDb的静态加载图片和动态在 IFieldObject中显示图片,显然,静态加载是不行的了,而后者仅支持JPEG和BMP格式的图片。因此,我们需要把任意格式的图片预先转换成受支持的JEPG或BMP格式,再填充到DataSet中,然后动态地推入到水晶报表中。
下面的示例中将讲述如何将一个给定路径或从其它途径得到的一个图片流转换成JPEG格式并返回成一个字节数组,以提供给后续应用:
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
namespace Common

{
/**//// <summary>
/// 与图像相关的工具类。
/// </summary>
public class ImageUtil
{
public ImageUtil()
{
}

/**//// <summary>
/// 从指定路径中读取一个图像文件并保存到字节数组中。
/// 此方法供水晶报表显示图片使用,所返回字节数组是 BMP 或 JEPG 格式图像数据的数组。
/// </summary>
/// <param name="path">指定的文件路径</param>
/// <returns>从图像中读取出的数据。</returns>
public static byte[] ReadImage(string path)
{
FileStream stream = null;
try
{
stream = File.OpenRead(path);
return ReadImage(stream);
}
finally
{
if(stream != null)
{
stream.Close();
}
}
}

/**//// <summary>
/// 从给定的流中读取数据到一个字节数组中,并返回此数组。
/// 如果给定的流不是一个图像格式的流,将报异常。
/// 返回的字节数组中,将非BMP和JEPG格式的图像数据流转换为JEPG格式输出,以支持大多数应用。
/// 适用于直接从数据库中读取的二进制图像流的处理。
/// </summary>
/// <param name="stream">给定的图像数据流。</param>
/// <returns>从流中读取的数据。</returns>
public static byte[] ReadImage(Stream stream)
{
Image image = Image.FromStream(stream);
byte[] myImage = null;
if(image.RawFormat.Guid != ImageFormat.Jpeg.Guid && image.RawFormat.Guid != ImageFormat.Bmp.Guid)
{
MemoryStream memStream = new MemoryStream();
image.Save(memStream, ImageFormat.Jpeg);
myImage = memStream.GetBuffer();
memStream.Close();
}
else
{
stream.Position = 0;
myImage = new byte[stream.Length];
stream.Read(myImage, 0, (int)stream.Length);
}
return myImage;
}
}
}下面是应用上面代码的一个示例(非完整):
private void Form7_Load(object sender, System.EventArgs e)
{
string[] etc = new string[]
{"jpg", "gif", "bmp", "tif", "png"};
string path = @"C:\Documents and Settings\sh12\My Documents\My Pictures\NeweggLogo.";
try
{
byte[] myImage = null;
Dataset2 ds = new Dataset2();
DataRow drNew = null;
for(int i=0; i<etc.Length; i++)
{
myImage = Newegg.Common.ImageUtil.ReadImage(path + etc);
drNew = ds.MyTable.NewRow();
drNew["ImageType"] = etc;
drNew["ImageData"] = myImage;
ds.MyTable.Rows.Add(drNew);
}
myImage = Newegg.Common.ImageUtil.ReadImage(@"C:\Documents and Settings\sh12\My Documents\My Pictures\untitled.JPG");
drNew = ds.MyTable.NewRow();
drNew["ImageType"] = "untitled.JPG";
drNew["ImageData"] = myImage;
ds.MyTable.Rows.Add(drNew);
ds.AcceptChanges();
CrystalReport1 rpt = new CrystalReport1();
rpt.SetDataSource(ds);
this.crystalReportViewer1.ReportSource = rpt;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}其实这个实现非常简单,思路也容量想到。只是,还是希望能够给大家提供一些帮助或启迪了。
谢谢大家的阅读!
请指正!