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());
}