找回密码
 立即注册

QQ登录

只需一步,快速开始

X765321

银牌会员

31

主题

99

帖子

3742

积分

银牌会员

积分
3742

活字格认证

X765321
银牌会员   /  发表于:2012-6-18 14:24  /   查看:11316  /  回复:10
spread4+vs2008+ie7

服务端代码1
FarPoint.Web.Spread.Extender.AutoCompleteCellType ac = new FarPoint.Web.Spread.Extender.AutoCompleteCellType();
            ac.CompletionInterval = 1;
            ac.DelimiterCharacters = ";, :";
            AjaxControlToolkit.TextBoxWatermarkExtender twe = new AjaxControlToolkit.TextBoxWatermarkExtender();
            twe.WatermarkText = "输入'S'测试...";
            ac.Extenders.Add(twe);
            ac.FirstRowSelected = true;
            ac.ServicePath = "WebService1.asmx";
            ac.ServiceMethod = "GetAllNames";
            ac.MinimumPrefixLength = 1;
            ac.EnableCaching = true;
            ac.ShowEditor = true;
            FpSpread1.ActiveSheetView.Cells[0, 0].CellType = ac;

服务端代码2
    [System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {
        [WebMethod]
        public string[] GetAllNames(string prefixText, int count)
        {
            ArrayList filteredList = new ArrayList();
            string[] names = { "AzamSharp", "Scott", "Alex", "Mary", "John", "Ali", "Sam", "Sammy" };
            foreach (string name in names)
            {
                if (name.ToLower().StartsWith(prefixText.ToLower()))
                    filteredList.Add(name);
            }
            return (string[])filteredList.ToArray(typeof(string));
        }     
    }

客户端代码
<body>
    <form id="form1" runat="server">
    <div id="divData" style="width: 100%; height: 100%; position: absolute; top: 0px;left: 0px; z-index: 1; display: block;">
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    </div>
    <div id="divMask" style="width: 100%; height: 100%; background-color: #0000FF; position: absolute;top: 0px; left: 0px; z-index: 2; display: block;">
    </br>YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
    </div>
    <div id="divEdit" style="position: absolute; top: 0px; left: 0px; z-index: 3; display: block;
        width: 450px; height: 580px; background-color: #FFFFFF;">
   
    <FarPoint:FpSpread ID="FpSpread1" runat="server" BorderColor="Black" BorderStyle="Solid"
        BorderWidth="1px" Height="100%" Width="100%">
        <CommandBar BackColor="Control" ButtonFaceColor="Control" ButtonHighlightColor="ControlLightLight"
            ButtonShadowColor="ControlDark">
        </CommandBar>
        <Sheets>
            <FarPoint:SheetView SheetName="Sheet1">
            </FarPoint:SheetView>
        </Sheets>
    </FarPoint:FpSpread>
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    </div>
    </form>
</body>

代码可正常运行,但当输入字符时下自动完成下拉框弹出会导致层divMask透明属性失效,如图:

输入时.jpg (15.35 KB, 下载次数: 1348)

10 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2012-6-18 17:17:00
沙发
回复 1楼X765321的帖子

IE 7 下 z-index 属性失效是 web 开发中常见的问题。
不知到楼主想实现什么效果,能否设置 divData 的 display 属性为 none 来实习呢?

  1. <div id="divData" style="width: 100%; height: 100%; position: absolute; top: 0px;left: 0px; z-index: -2; display:none;">
  2. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  3. </div>
复制代码

或者仅在 活跃单元格为 cell[0,0]时使其 display 属性 为 none:

  1.     <script language="javascript" type="text/javascript" id="FpSpread1_Script0">
  2.                 function FpSpread1_EditStart(event){
  3.                         //Add code to handle your event here.
  4.                         if(this.FpSpread1.ActiveCol==0&amp;&amp;this.FpSpread1.ActiveRow==0)
  5.                         {
  6.                             var divData=this.document.getElementById("divData");
  7.                             divData.style.display="none";
  8.                         }
  9.                         else
  10.                         {
  11.                             var divData=this.document.getElementById("divData");
  12.                             divData.style.display="block";
  13.                         }
  14.                 }
  15.         </script>
复制代码
回复 使用道具 举报
X765321
银牌会员   /  发表于:2012-6-18 20:37:00
板凳
需要的效果是这样的,第一层divData有一个spreadA显示有多行记录,双击spreadA某行时弹出第二层divMask(透明层),再弹出divEdit显示出spreadB以显示行记录的明细信息,divMask的作用就是不允许用户操作divData上的数据,但在divEdit上有上一行下一行的按钮可以控制spreadA上的选中行移动并显示相应行的明细,这是原始的要求,不是我发到上面的例子,但问题差不多是一样的,当AutoCompleteCellType的单元格弹出下拉框时,divMask会被隐藏掉,下拉框关闭时才会显示出来,怎么改?

PS:如果不使用spreadB,在divEdit上使用TextBox+Select弹出下拉框并不会出问题,可见问题确系spread的AutoCompleteCellType造成。
回复 使用道具 举报
X765321
银牌会员   /  发表于:2012-6-19 11:00:00
地板
大大啊,这个问题很重要,能不能优先解决一下
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-6-19 11:27:00
5#
回复 4楼X765321的帖子

好的
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-6-19 12:12:00
6#
回复 3楼X765321的帖子

X765321  是否尝试 2# 中的代码?可行否?
回复 使用道具 举报
X765321
银牌会员   /  发表于:2012-6-19 12:26:00
7#
如果隐藏divData层,用户体验会比较糟糕。。。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-6-19 12:42:00
8#
回复 7楼X765321的帖子

请尝试一下代码:

  1.     <!-编辑事件开始时,如果单元格类型为 AutoCompleteCellType,设置 display 为 none-->
  2.     <script language="javascript" type="text/javascript" id="FpSpread1_Script0">
  3.                 function FpSpread1_EditStart(event){
  4.                         //Add code to handle your event here.
  5.                        
  6.                         var scell = FpSpread1.GetCellByRowCol(FpSpread1.ActiveRow, FpSpread1.ActiveCol)
  7.                         if(scell.CellType2=='AutoCompleteCellType')
  8.                         {
  9.                             var divData = this.document.getElementById("divData");
  10.                             divData.style.display="none";
  11.                         }
  12.                 }
  13.         </script>
  14.     <!-编辑事件结束时,如果单元格类型为 AutoCompleteCellType,设置 display 为 block-->
  15.         <script language="javascript" type="text/javascript" id="FpSpread1_Script1">
  16.                 function FpSpread1_EditStopped(event){
  17.                         //Add code to handle your event here.
  18.                         var scell = FpSpread1.GetCellByRowCol(FpSpread1.ActiveRow, FpSpread1.ActiveCol)
  19.                         if(scell.CellType2=='AutoCompleteCellType')
  20.                         {
  21.                             var divData = this.document.getElementById("divData");
  22.                             divData.style.display="block";
  23.                         }
  24.                 }
  25.         </script>
复制代码
回复 使用道具 举报
X765321
银牌会员   /  发表于:2012-6-20 01:29:00
9#
看来这个问题是解决不了了。。。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-6-25 08:50:00
10#
回复 9楼X765321的帖子

X765321 你好,
请尝试设置 DIV position 属性如下:
  1. &lt;div id=”divEdit” style=”position:relative….
复制代码
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部