程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#進行Visio二次開發之Web查看Visio圖紙

C#進行Visio二次開發之Web查看Visio圖紙

編輯:關於C#

前面介紹的Visio開發知識,都是基於Winform的Visio的開發知識,圖紙的展示都是基於Winform方式展示的。但很多時候,如果能夠通過Web方式可以查看最新的圖紙信息,那麼系統將更加趨向完美,你說是不是呢?

通過Web方式查看Visio圖紙實現起來也是很容易的,首先需要在IE客戶端安裝一個Visio Viewer的ActiveX控件支持(微軟提供),然後剩下來的就是編碼展示了,展示的方式和其他的ActiveX控件展示方式差不多。先看看總體的界面實現思路,讓大家有一個較好的理解後,然後我們在一步步分析如何實現。

單擊查看饋線圖的按鈕後,新開一個窗口展示Visio的圖紙(是不是和Winform看到的效果差不多呢?呵呵)

下面介紹下如何實現這個功能:

1、第一個頁面的實現很簡單,你指定一個鏈接指向新的頁面(VisioContainer.aspx),該頁面包含Visio View的ActiveX控件,連接中帶一些參數過來,指明是查看那個圖紙的就OK了。

2、這個頁面(VisioContainer.aspx)實現很關鍵,在此頁面放置一個Visio Viewer的ActiveX控件,這個控件最重要的一個變量是SRC,它需要指向一個Visio的文件路徑,如果Visio圖紙是文件的話,直接賦值就可以顯示了。但是,我們的系統是基於數據庫存儲的,所有的Visio圖紙都是已二進制的方式存儲在數據庫的,那該如何實現呢?先看頁面代碼

<form id="Form1" runat="server">
<div>
<div align="right" style="font-size:x-small">如圖紙不能正常顯示,請<a href="http://www.cnblogs.com/Visio/Visio Viewer 2003.exe">下載安裝Visio Viewer2003</a></div>
<object id="Viewer1" codebase="http://www.cnblogs.com/Visio/Visio Viewer 2003.exe" height="100%" width="100%"
classid="clsid:279D6C9A-652E-4833-BEFC-312CA8887857" viewastext>
<param name="_cx" value="31485">
<param name="_cy" value="20373">
<param name="BackColor" value="16777200">
<param name="AlertsEnabled" value="-1">
<param name="ContextMenuEnabled" value="-1">
<param name="GridVisible" value="0">
<param name="HighQualityRender" value="-1">
<param name="PageColor" value="16777215">
<param name="PageVisible" value="-1">
<param name="PropertyDialogEnabled" value="-1">
<param name="ScrollbarsVisible" value="-1">
<param name="SizeGripVisible" value="-1">
<param name="ToolbarVisible" value="-1">
<param name="SRC" value="">
<param name="CurrentPageIndex" value="0">
<param name="Zoom" value="-1">
<param name="PageTabsVisible" value="-1">
<param name="ToolbarButtons" value="">
<param name="ToolbarCustomizable" value="-1">
</object>
</div>
</form>

其中我們需要動態指定SRC的值,因此在頁面(VisioContainer.aspx)後台代碼中動態綁定了,這裡我們使用了JavaScript的方式來加載Visio Viewer 的SRC路徑信息。

protected void Page_Load(object sender, EventArgs e)
{
string VisioID= Request.QueryString["VisioID"];
StringBuilder sb = new StringBuilder();
sb.Append("<script language='javascript'>");
sb.AppendFormat("Form1.Viewer1.src = 'VisioFile.aspx?VisioID={0}'", System.Web.HttpUtility.UrlEncode(VisioID));
sb.Append("</script>");
ClientScript.RegisterStartupScript(typeof(string),"loadvisio", sb.ToString());
}

我們通過一個新的頁面VisioFile.aspx來動態生成Visio文件,然後賦值給SRC屬性即可實現了。

VisioFile.aspx的頁面只需要實現PageLoad函數即可,如下所示

private void Page_Load(object sender, System.EventArgs e)
{
string VisioID = Request.QueryString["VisioID"];
if (VisioID != null)
{
VisioImageRelease VisioImage = new VisioImageRelease();
using (IDataReader dr = VisioImage.GetByVisioID(VisioID))
{
dr.Read();
byte[] visioImage = (byte[])dr["visioImage"];
OutputVisioFile(visioImage);
}
}
}
/// <summary>
/// 輸入Visio文件到流
/// </summary>
/// <param name="visioFile">Visio文件字節數組</param>
private void OutputVisioFile(byte[] visioFile)
{
Response.ContentType = "application/vnd.ms-visio.viewer";
Response.OutputStream.Write(visioFile, 0, visioFile.Length);
Response.Flush();
Response.End();
}

這樣我們就可以實現Web端展示Visio圖紙的功能了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved