找回密码
 立即注册

QQ登录

只需一步,快速开始

huanghengxiang4

主题

帖子

积分

积分
  • 金币

  • 主题

  • 帖子

最新发帖
huanghengxiang4
  /  发表于:2013-9-11 15:41  /   查看:8242  /  回复:9
提示: 作者被禁止或删除 内容自动屏蔽

9 个回复

倒序浏览
xujingtian
论坛元老   /  发表于:2013-9-11 16:22:00
沙发
试试这个:
CellRange[] info = FpSpread1.ActiveSheetView.GetSelections();
            if (info != null && info.Count() > 0)
            {
                StyleInfo test = new StyleInfo();
                test.HorizontalAlign = HorizontalAlign.Center;
                test.VerticalAlign = VerticalAlign.Middle;
                int row = info[0].Row < 0 ? 0 : info[0].Row;
                int col = info[0].Column < 0 ? 0 : info[0].Column;
                int rowcount = info[0].RowCount < 0 ? FpSpread1.ActiveSheetView.RowCount : info[0].RowCount;
                int colcount = info[0].ColumnCount < 0 ? FpSpread1.ActiveSheetView.ColumnCount : info[0].ColumnCount;
                FpSpread1.ActiveSheetView.AddSpanCell(row, col, rowcount, colcount);
            }

不过,我还有个问题,合并完之后,想撤销,怎么办呢?有没有撤销的功能?
回复 使用道具 举报
huanghengxiang4
  /  发表于:2013-9-11 16:33:00
板凳
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
xujingtian
论坛元老   /  发表于:2013-9-11 17:04:00
地板
整个选中合并的单元格
是什么意思?
回复 使用道具 举报
huanghengxiang4
  /  发表于:2013-9-11 17:08:00
5#
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-9-11 18:51:00
6#
回复 5楼huanghengxiang4的帖子

我使用 2# 中的方法合并单元格成功:

  1. protected void Button1_Click(object sender, EventArgs e)
  2.         {
  3.             CellRange[] info = FpSpread1.ActiveSheetView.GetSelections();
  4.             if (info != null &amp;&amp; info.Count() > 0)
  5.             {
  6.                 StyleInfo test = new StyleInfo();
  7.                 test.HorizontalAlign = HorizontalAlign.Center;
  8.                 test.VerticalAlign = VerticalAlign.Middle;
  9.                 int row = info[0].Row < 0 ? 0 : info[0].Row;
  10.                 int col = info[0].Column < 0 ? 0 : info[0].Column;
  11.                 int rowcount = info[0].RowCount < 0 ? FpSpread1.ActiveSheetView.RowCount : info[0].RowCount;
  12.                 int colcount = info[0].ColumnCount < 0 ? FpSpread1.ActiveSheetView.ColumnCount : info[0].ColumnCount;
  13.                 FpSpread1.ActiveSheetView.AddSpanCell(row, col, rowcount, colcount);
  14.             }
  15.         }
复制代码


请问你是想在选中后让单元格显示边框吗?
回复 使用道具 举报
huanghengxiang4
  /  发表于:2013-9-12 09:21:00
7#
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-9-12 16:40:00
8#
回复 7楼huanghengxiang4的帖子

huanghengxiang4 你好,

你使用的是 Winform 平台吧?请问使用的是什么版本呢? Spread for Winforms 7.0?

使用  Spread for Winforms 7.0 测试,需要区分两个概念 Merge 和 Span。
1.我在 Winform 平台下,使用 AddSpanCell 添加合并单元格,可以整体选中。

  1. this.fpSpread1.Sheets[0].AddSpanCell(0, 0, 3, 1);
复制代码


2.Merge 在选择时是 1# 中的效果:

  1.   this.fpSpread1.Sheets[0].Cells[0, 1].Text = &quot;Merge测试&quot;;
  2.             this.fpSpread1.Sheets[0].Cells[1, 1].Text = &quot;Merge测试&quot;;
  3.             this.fpSpread1.Sheets[0].Cells[2, 1].Text = &quot;Merge测试&quot;;
  4.             this.fpSpread1.Sheets[0].Columns[1].MergePolicy = FarPoint.Win.Spread.Model.MergePolicy.Always;
复制代码
回复 使用道具 举报
xujingtian
论坛元老   /  发表于:2013-9-13 08:20:00
9#
回复 8楼iceman的帖子

那ASP.NET 选中时,怎么样才有1#中的效果呢?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-9-13 12:54:00
10#
回复 9楼xujingtian的帖子

你好,

需要调用后台代码设置 Border:
C#

  1. protected override void Render(HtmlTextWriter writer)
  2.         {
  3.             Table tb = this.FpSpread1.FindControl("viewport") as Table;
  4.             tb.Attributes.Add("onclick", "CellClick()");
  5.             base.Render(writer);
  6.         }

  7.         protected void FpSpread1_ButtonCommand(object sender, SpreadCommandEventArgs e)
  8.         {
  9.             int column=this.FpSpread1.ActiveSheetView.ActiveColumn;
  10.             int row=this.FpSpread1.ActiveSheetView.ActiveRow;
  11.             this.FpSpread1.ActiveSheetView.Cells[row, column].Border = new Border(BorderStyle.Solid, System.Drawing.Color.Red, 2);
  12.         }
复制代码

JS:

  1.     <script type="text/javascript">
  2.         function CellClick() {
  3.             var spread = this.document.getElementById("FpSpread1");
  4.             var row = spread.ActiveRow;
  5.             var col = spread.ActiveCol;

  6.             spread.CallBack("button")
  7.         }
  8.     </script>
复制代码

如果需要清除 Border,可以在 下次进入 ButtonCommand 事件后,通过 ResetBorder 方法,先清除之前单元格的 Border。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部