找回密码
 立即注册

QQ登录

只需一步,快速开始

hezhilin

初级会员

34

主题

100

帖子

450

积分

初级会员

积分
450

活字格认证

hezhilin
初级会员   /  发表于:2013-2-17 13:18  /   查看:6405  /  回复:7
我已实现了第一列为选择框功能,但我想在这一行任意一个单元格单击,这一行就都变为选择状态,设置下面这个属性可以实现
grd.Sheets(0).OperationMode = FarPoint.Web.Spread.OperationMode.SingleSelect
但设了这个属性之后,第一列的选择框就不能点了!

http://gcdn.grapecity.com/showtopic-7456.html   选择框是用这个办法实现的

第二个小问题: 客户端事件好像没有行的双击事件,我想实现在这一行上双击,新开一个新网页对这一行进行编辑(这个编辑页面都已做好了)

7 个回复

倒序浏览
hezhilin
初级会员   /  发表于:2013-2-17 14:37:00
沙发
补充:
问题三:
grd.Sheets(0).OperationMode = FarPoint.Web.Spread.OperationMode.ExtendedSelect
如果使用这种模式我感觉也挺好的,可以通过鼠标多选,但我想在后台代码和前台代码中判断哪些行被选中了,这个怎么实现呢?谢谢!!
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-2-17 15:03:00
板凳
  1.         protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             if (!IsPostBack)
  4.             {
  5.                 // 问题1,设置RowMode既可以选中一行,同时可以点击第一列
  6.                 FpSpread1.ActiveSheetView.OperationMode = FarPoint.Web.Spread.OperationMode.RowMode;

  7.                 FarPoint.Web.Spread.CheckBoxCellType cbct_header = new FarPoint.Web.Spread.CheckBoxCellType();
  8.                 cbct_header.OnClientClick = "HeaderClick(this)";
  9.                 FpSpread1.ActiveSheetView.ColumnHeader.Cells[0, 0].CellType = cbct_header;

  10.                 FarPoint.Web.Spread.CheckBoxCellType cbct_detail = new FarPoint.Web.Spread.CheckBoxCellType();
  11.                 FpSpread1.ActiveSheetView.Columns[0].CellType = cbct_detail;
  12.             }
  13.         }

  14.         protected override void Render(HtmlTextWriter writer)
  15.         {
  16.             // 给Spread添加客户端的双击事件
  17.             Table table = FpSpread1.FindControl("viewport") as Table;
  18.             table.Attributes.Add("ondblclick", "RowDbClick()");

  19.             base.Render(writer);
  20.         }
  21.     }

  22.     <script language="javascript" type="text/javascript" id="FpSpread1_Script0">
  23.         function HeaderClick(event) {
  24.             var spread = document.getElementById("FpSpread1");
  25.             for (var i = 0; i < spread.GetRowCount(); i++) {
  26.                 spread.SetValue(i, 0, event.checked, true);
  27.             }
  28.         }

  29.         function RowDbClick() {
  30.             var spread = document.getElementById("FpSpread1");
  31.             var rowindex = spread.GetActiveRow();
  32.             var colindex = spread.GetActiveCol();

  33.             alert("双击了第" + rowindex + "行!");
  34.         }
  35.     </script>
复制代码
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-2-17 15:07:00
地板
回复 2楼hezhilin的帖子

服务端可以通过 FpSpread1.ActiveSheetView.GetSelections() 获得选择的范围,客户端可以通过以下代码获得:
  1.             var s = document.getElementById(&quot;FpSpread1&quot;);
  2.             var rgs = s.GetSelectedRanges();
  3.             for (var i = 0; i &lt; rgs.length; i++) {
  4.                 var rg = rgs[i];
  5.                 alert(rg.row + &quot;, &quot; + rg.col + &quot;, &quot; + rg.rowCount + &quot;, &quot; + rg.colCount);
  6.             }
复制代码
回复 使用道具 举报
hezhilin
初级会员   /  发表于:2013-2-20 12:58:00
5#
谢谢!实现了!
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-2-20 13:35:00
6#
谢谢反馈最终结果。
回复 使用道具 举报
hezhilin
初级会员   /  发表于:2013-2-22 12:49:00
7#
请问后台事件能不能加双击事件呢?前台加了双击,但是有个缺点,前台脚本取不到隐藏列的值,只有后台才能取到!
后台加双击事件和前台脚本取隐藏列的值我都想知道怎么做!
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-2-22 14:20:00
8#
回复 7楼hezhilin的帖子

Spread没有提供后台的双击事件,其实你可以通过Spread前台的 FpSpread1.GetHiddenValue(0,&quot;D&quot;); 获取隐藏单元格的值。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部