none
OWC中SpreadSheet控件采用<object>嵌入到网页,怎么使它在其它层之下(如div下)? RRS feed

  • 问题

  • OWC中SpreadSheet控件采用<object>嵌入到网页,不管怎么设置,<object>都在其它层或块之上,有没有方法将这种ActiveX控件的层设置为最低,在其它层之下?

    不采用以下方式:将ActiveX控件嵌入Iframe去实现。

    示例代码:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SASAppSglReportDetail.aspx.cs" Inherits="EINTECH.IMS.UI.Web.SASApp.SASAppSglReportDetail" %>
    <%@ Register Assembly="EINTECH.Platform.UI.Web.ComponentsEx" Namespace="EINTECH.Platform.UI.Web" TagPrefix="EI" %>
    <%@ Register Assembly="EINTECH.Platform.UI.Web.ComponentsEx" Namespace="EINTECH.Platform.UI.Web.ComponentsEx" TagPrefix="EI" %>
    <html>
    <head runat="server">
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="Cache-Control" content="no-cache, must-revalidate">
        <meta http-equiv="expires" content="0">
        <EI:WebHead ID="WebHead1" runat="server" Title="业务模块统计"></EI:WebHead>
        <EI:WebServiceRef ID="WebServiceRef1" Src="~/IMS/WebServices/SASApp/SASAppCommon.asmx" runat="server"></EI:WebServiceRef>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <table cellpadding="3" style="width:100%;height:100%">
                <tr>
                    <td>
                        <div id="divMsg" style="width:100%">
                            <EI:WebDetailRecordEdit ID="dreConditionQuery" runat="server" Width="100%" />
                        </div>
                    </td>
                </tr>
                <tr  style="height:100%">
                    <td>
                        <OBJECT  id="objSpreadsheet" classid="CLSID:0002E559-0000-0000-C000-000000000046" height="100%" width="100%" style="z-index:-100">
                        </OBJECT>
                    </td>
                </tr>
            </table>
        </div>
        </form>
    </body>
    </html>
    <script language="javascript" type="text/javascript">
    var objectType = "<%=ObjectType %>";
    var objectName = "<%=ObjectName %>";
    var objSpreadsheetObj = document.getElementById("objSpreadsheet");
    var sglParamsMapCfgTable = null;
    var sglResourceMapCfgTable = null;
    var dataTable = null;
       
    function onQuery()
    {
        WaitWindow("数据统计计算中,请稍候......");
        setTimeout("compute()",1);
    }
    function onExport()
    {
        objSpreadsheetObj.Export("SAS Export XXX.xsl");
    }
    function onPrint()
    {
    }
    function compute()
    {
        objSpreadsheetObj.Caption = objectName;
        objSpreadsheetObj.XMLData = executeBuildTempReport();
        objSpreadsheetObj.style.width = "100%";
        objSpreadsheetObj.style.height = "100%";
        WaitWindow();
    }
    function executeBuildTempReport()
    {
        if(sglParamsMapCfgTable==null)
        {
            dataTable = new EI.Data.DataTable();
            sglParamsMapCfgTable = SASAppCommon.GetParamsMapEntityByType(objectType);
        }
        dataTable.setDataTable(sglParamsMapCfgTable);
        var keyNameValues = [];
        for(var i=0;i<dataTable.getRowCount();i++)
        {
            var keyNameValue = new Object();
            keyNameValue.Key = "";
            keyNameValue.Name = "";
            keyNameValue.Value = "";
           
            var s = getDataCellValue(dataTable,i,"APPPARAMNAME");
            var obj = dreConditionQuery.getControlByName(s);
            keyNameValue.Key = getDataCellValue(dataTable,i,"SASPARAMNAME");
            keyNameValue.Name  =   obj.classname
            keyNameValue.Value  =   obj.classname=="EI.UI.DateTime"?obj.getText()  :  obj.getValue();
      
            keyNameValues[ i ]  = keyNameValue;
        }
        var result = SASAppCommon.BuildTempReport(getReportResourcePath(),keyNameValues).Result;
        return result;
    }
    function getReportResourcePath()
    {
        if(sglResourceMapCfgTable==null)
        {
            dataTable = new EI.Data.DataTable();
            sglResourceMapCfgTable = SASAppCommon.GetResourceMapEntityByType(objectType);
        }
        dataTable.setDataTable(sglResourceMapCfgTable);
        if(dataTable.getRowCount()==1)
        {
            return getDataCellValue(dataTable,0,"MAPRESOURCE");
        }
        for(var i=0;i<dataTable.getRowCount();i++)
        {
            var appParamName = getDataCellValue(dataTable,i,"APPPARAMNAME");
            var appParamValue = getDataCellValue(dataTable,i,"APPPARAMVALUE");
           
            if(dreConditionQuery.getControlByName(appParamName).getValue()==appParamValue)
            {
                return getDataCellValue(dataTable,i,"MAPRESOURCE");
            }
        }
        return "";
    }

    var queryObj = document.getElementById("btnQuery");
    if(queryObj)
    {
        queryObj.onclick=onQuery;
    }
    var exportObj = document.getElementById("btnExport");
    if(exportObj)
    {
        exportObj.onclick = onExport;
    }
    var printObj = document.getElementById("btnPrint");
    if(printObj)
    {
        printObj.onclick = onPrint;
    }
    </script>

    2007年11月14日 7:25

答案

  •  

    完全可以用DIV实现

    div { position:absolute; z-index:3; left:267px; top:72px;width:100px; height:100px; }
    设置z-index,其实从字面上已经可以解释;z是从x、y以后的第三个轴,从网页上表现就是除了上下左右外的前后。规定这个属性,首先要求Div必须是浮动的,值越大,Div越靠前;数值可以不连续。

    你可以把你的OWC放在一个DIV里,把z-index属性设置成0

    在把你需要放在这个层之上的内容放到另一个DIV里,把z-index属性设置成1

    在设置两个层的left和top属性,使两个层重叠

    就可以了!

     

    2007年12月8日 7:02

全部回复

  •  

    完全可以用DIV实现

    div { position:absolute; z-index:3; left:267px; top:72px;width:100px; height:100px; }
    设置z-index,其实从字面上已经可以解释;z是从x、y以后的第三个轴,从网页上表现就是除了上下左右外的前后。规定这个属性,首先要求Div必须是浮动的,值越大,Div越靠前;数值可以不连续。

    你可以把你的OWC放在一个DIV里,把z-index属性设置成0

    在把你需要放在这个层之上的内容放到另一个DIV里,把z-index属性设置成1

    在设置两个层的left和top属性,使两个层重叠

    就可以了!

     

    2007年12月8日 7:02
  • z-index can't affect the activex controls in the web page.

    2007年12月24日 5:52
  •  

    非常感谢您的回复!您所提的解决方法不能解决此问题,在浏览器中,这种控件的遮挡问题,具有优先级,最典型的就是DropdownList和ActiveX的遮挡,HTML的z-index就是用于处理这个问题,但是直接设置这个属性还不行,因为这中间还牵扯到有窗口元素和无窗口元素的问题。
    2008年9月7日 11:05
  • 好复杂

     

    2008年10月4日 14:06
  •  Mike liu 写:

     

    完全可以用DIV实现

    div { position:absolute; z-index:3; left:267px; top:72px;width:100px; height:100px; }
    设置z-index,其实从字面上已经可以解释;z是从x、y以后的第三个轴,从网页上表现就是除了上下左右外的前后。规定这个属性,首先要求Div必须是浮动的,值越大,Div越靠前;数值可以不连续。

    你可以把你的OWC放在一个DIV里,把z-index属性设置成0

    在把你需要放在这个层之上的内容放到另一个DIV里,把z-index属性设置成1

    在设置两个层的left和top属性,使两个层重叠

    就可以了!

     

     

    正解,flash的Object已经测试成功。

    2009年1月15日 6:43
  •  Kimm King 写:

    z-index can't affect the activex controls in the web page.

     

    that  happens  only  below 6.0 

    2009年1月23日 9:34