找回密码
 立即注册

QQ登录

只需一步,快速开始

sam
论坛元老   /  发表于:2012-11-21 16:39  /   查看:7594  /  回复:8
Hi  dof:

关于隐藏某列,我想到一个办法,即:在页面呈现时,为单元格增加display的隐藏属性。但是这样我试过了,好象没有效果。请帮我看看,有没办法实现通过css来隐藏某列。

我知道可以设置列的属性Visible=false来设置某列为隐藏,但是,后续我在JS中就没办法为隐藏列赋值。
因为隐藏列的单元格没办法通过Js的方法SetValue来赋值。故,我想到了,看如何使用css来控制列的隐藏,这样在Js中应该就可以为隐藏列单元格赋值了。

看以上能否实现?
感谢!
-------------------------------------------------
protected void Page_Load(object sender, EventArgs e)
        {
            FpSpread1.ActiveSheetView.ColumnCount = 4;
        }

protected override void Render(HtmlTextWriter writer)
        {
            //將第二列隱藏掉
            //控制表頭
            Table table0 = FpSpread1.FindControl("cht") as Table;
            int i0 = table0.Rows.Count;
            int k0 = table0.Rows[0].Cells.Count;
            for (int j = 0; j < i0; j++)
            {
                for (int n = 0; n < k0; n++)
                {
                    if (n == 2)
                    {
                        table0.Rows[j].Cells[n].Attributes.Remove("class");
                        table0.Rows[j].Cells[n].Attributes.Add("display", "none");
                        
                    }
                }
            }


            //控制表體
            Table table = FpSpread1.FindControl("viewport") as Table;
            int i = table.Rows.Count;
            int k = table.Rows[0].Cells.Count;
            for (int j = 0; j < i; j++)
            {
                for (int n = 0; n < k; n++)
                {
                    if (n == 1)
                    {
                        table.Rows[j].Cells[n].Attributes.Remove("class");
                        table.Rows[j].Cells[n].Attributes.Add("display", "none");
                    }
                }
            }

           base.Render(writer);

        }

8 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-11-21 17:51:00
沙发
sam 你好

我这边调试之后给你回复结果。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-11-22 20:26:00
板凳
回复 1楼sam的帖子

sam 你好

似乎你的需求通过设置列的宽度为0是比较简单的一种方法,这样可以在客户端拿到没有显示的单元格,并能赋值:
  1.     protected void Page_Load(object sender, EventArgs e)
  2.     {
  3.         if (!IsPostBack)
  4.         {
  5.             FpSpread1.ActiveSheetView.Columns[1].Width = 0;
  6.         }
  7.     }
复制代码
回复 使用道具 举报
sam
论坛元老   /  发表于:2012-11-22 21:59:00
地板
这样子我试过了,即使设置为0,还是会有显示的。
回复 使用道具 举报
sam
论坛元老   /  发表于:2012-11-22 22:00:00
5#
我的需求是,还是需要将列隐藏掉。客户端不显示。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-11-23 17:16:00
6#
应该不会显示吧,我的代码运行之后在客户端看不到B列:

7063_Visible.zip (7.71 KB, 下载次数: 156)
回复 使用道具 举报
sam
论坛元老   /  发表于:2012-11-23 18:25:00
7#
不过,这样也可以,差不多了。谢谢!
回复 使用道具 举报
sam
论坛元老   /  发表于:2012-11-23 20:05:00
8#
我又发现个问题,好像,在IE6中,会当宽度设置为0时,会有缝隙。但是IE8中不会有。
请问,有没办法,解决IE6中和IE8一样,不会有缝隙?

picc.JPG

8.52 KB, 下载次数: 167

回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-11-26 20:20:00
9#
这个问题只能特使处理了,在服务端判断浏览器的版本,然后通过后台代码把隐藏列的边框隐藏掉。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部