vml图形无法正常显示
新沙和尚 2009-01-13 03:10:43 我用vml写的程序前台代码是
<html xmlns:vml="urn:schemas-microsoft-com:vml">
<head>
<OBJECT id="vmlRender" classid="CLSID:10072CEC-8CC1-11D1-986E-00A0C955B42E" VIEWASTEXT></OBJECT>
<style>vml\:* { FONT-SIZE: 12px; BEHAVIOR: url(#VMLRender) }
</style>
</head>
<body class="bodycolor" leftmargin="2" topmargin="2" onmousedown="DoRightClick();"
oncontextmenu="nocontextmenu();">
<div id="mytip2" style="border: 1px dotted #DE7293; padding: 2px; font-size: 10pt;
width: 100%; position: absolute; top: 0px">
<img src="../../../../images/icon64_info.png" width="16" height="16" align="absmiddle">在步骤图形框上单击鼠标右键可以弹出功能菜单,双击步骤图形框设置步骤基本属性。
<u><span style="cursor: hand" onclick="hidetip(mytip2);"><b>->关闭此提示<b></span></u>
</div>
<form id="Form1" method="post" runat="server">
<div>
<vml:Line style='DISPLAY:none;Z-INDEX:15;POSITION:absolute' id='line1' from="0,0" to="0,0">
<!--直线可视化-->
<vml:Stroke dashstyle='shortDash' />
</vml:Line>
<%=vml%>
</div>
<input type="hidden" name="SET_SQL"> <input type="hidden" name="FLOW_ID" value="<%=flowId%>">
<asp:Panel ID="pnlFlowDesc" runat="server" Visible="false">
<script>
function hidetip(div)
{
div.style.display="none";
}
</script>
<div id="mytip1" style="border:1px dotted #DE7293;padding:2px;font-size:10pt;width:100%;position: absolute;bottom:0px"><b>流程说明:<br></b><asp:Literal ID="litFlowDesc" runat="server"></asp:Literal> <u><span style="cursor:hand" onclick="hidetip(mytip1);"><b>->点击此处隐藏说明<b></span></u></div>
</asp:Panel>
</form>
</body>
</html>
后台代码是
public partial class general_system_workflow_flow_type_type_view_graph : System.Web.UI.Page
{
/// <summary>
/// 传入过程号,获得需要数据
/// </summary>
protected void getData(int prcid)
{
try
{
DAO.Open();
string mySql = "select prcsid,prcsname,prcsto,setleft,settop from hw_flow_process where flowid=" + flowId + " and prcsid="+prcid;
OracleCommand myComd = new OracleCommand(mySql,DAO.conn);
OracleDataReader myReader = myComd.ExecuteReader();
while(myReader.Read())
{
prcsid = myReader.GetInt32(0);
prcsname = myReader.GetString(1) ;
this.prcsto = myReader.GetString(2);
setleft = myReader.GetInt32(3);
settop = myReader.GetInt32(4);
}
myComd.Dispose();
}
catch (Exception ex)
{
Response.Write(ex.Message.ToString());
}
finally
{
DAO.Close();
}
}
protected int getPrcCount()
{
int PrcCount=0;
try
{
DAO.Open();
string mySql = "select count(*) from hw_flow_process where flowid=" + flowId;
OracleCommand myComd = new OracleCommand(mySql, DAO.conn);
PrcCount = Convert.ToInt32(myComd.ExecuteOracleScalar().ToString());
}
catch (Exception ex)
{
Response.Write(ex.Message.ToString());
}
finally
{
DAO.Close();
}
return PrcCount;
}
protected void showPage()
{
int allCount = getPrcCount();
int mytop=20, myleft=20;
if (allCount> 0)
{
for (int j = 1; j <= allCount; j++)
{
if (j % 2 == 0&&j>1)
{
mytop += 180;
}
else
{
if (j > 1)
{
myleft += 180;
mytop = 20;
}
}
getData(j);
showRoundrect(allCount,j,myleft,mytop);
}
}
else
{
this.Response.Write("没有可选步骤");
}
}
protected void showRoundrect(int allCount, int j,int myleft,int mytop)
{
if (j == 1)
{
vml += "<vml:roundrect inset='2pt,2pt,2pt,2pt' id='" + j + "'table_id='" + j + "'flowType='start' passCount='0' flowTitle='<b>" + j + "</b><br>" + prcsname + "' flowFlag='0' readOnly='0' receiverID='' receiverName='' fillcolor='#00EE00' onDblClick='Edit_Process(236);' style='LEFT:"+myleft+" ; TOP:"+mytop+"; WIDTH: 100; POSITION: absolute; HEIGHT: 50;vertical-align:middle;CURSOR:hand;TEXT-ALIGN:center;z-index:1' arcsize='4321f' coordsize='21600,21600'>";
vml+="<vml:shadow on='T' type='single' color='#b3b3b3' offset='3px,3px'/>";
vml+="<vml:textbox inset='1pt,2pt,1pt,1pt' onselectstart='return false;' title='步骤名称:"+prcsname+"下一步骤:'><b>"+j+"</b><br>"+prcsname+"</vml:textbox>";
vml+="</vml:roundrect>";
showLine(j);
}
else {
if (j == allCount)
{
vml += "<vml:roundrect inset='2pt,2pt,2pt,2pt' id='" + j + "'table_id='" + j + "'flowType='' passCount='0' flowTitle='<b>" + j + "</b><br>" + prcsname + "' flowFlag='0' readOnly='0' receiverID='' receiverName='' fillcolor='#00EE00' onDblClick='Edit_Process(236);' style='LEFT:" + myleft + " ; TOP:" + mytop + "; WIDTH: 100; POSITION: absolute; HEIGHT: 50;vertical-align:middle;CURSOR:hand;TEXT-ALIGN:center;z-index:1' arcsize='4321f' coordsize='21600,21600'>";
vml += "<vml:shadow on='T' type='single' color='#b3b3b3' offset='3px,3px'/>";
vml += "<vml:textbox inset='1pt,2pt,1pt,1pt' onselectstart='return false;' title='步骤名称:" + prcsname + "下一步骤:'><b>" + j + "</b><br>" + prcsname + "</vml:textbox>";
vml += "</vml:roundrect>";
showLine(j);
}
else
{
vml += "<vml:roundrect inset='2pt,2pt,2pt,2pt' id='" + j + "'table_id='" + j + "'flowType='end' passCount='0' flowTitle='<b>" + j + "</b><br>" + prcsname + "' flowFlag='0' readOnly='0' receiverID='' receiverName='' fillcolor='#00EE00' onDblClick='Edit_Process(236);' style='LEFT:" + myleft + " ; TOP:" + mytop + "; WIDTH: 100; POSITION: absolute; HEIGHT: 50;vertical-align:middle;CURSOR:hand;TEXT-ALIGN:center;z-index:1' arcsize='4321f' coordsize='21600,21600'>";
vml += "<vml:shadow on='T' type='single' color='#b3b3b3' offset='3px,3px'/>";
vml += "<vml:textbox inset='1pt,2pt,1pt,1pt' onselectstart='return false;' title='步骤名称:" + prcsname + "下一步骤:'><b>" + j + "</b><br>" + prcsname + "</vml:textbox>";
vml += "</vml:roundrect>";
showLine(j);
}
}
}
protected void showLine(int j)
{
vml += "<vml:line mfrID='" + j + "' title='' source='" + j + "' object='" + (j + 1) + "' from='0,0' to='0,0' style='position:absolute;display:none;z-index:2' arcsize='4321f' coordsize='21600,21600'><vml:stroke endarrow='block'></vml:stroke>";
vml += "<vml:shadow on='T' type='single' color='#b3b3b3' offset='1px,1px'/>";
vml+="</vml:line>";
}
}
这样运行的vml图形不能正常显示,但是
我用静态html写的就可以
下面静态的就可以,大侠帮忙了在线等