找回密码
 立即注册

QQ登录

只需一步,快速开始

PasysFish

初级会员

27

主题

59

帖子

224

积分

初级会员

积分
224

圣诞拼拼乐

PasysFish
初级会员   /  发表于:2020-4-30 17:39  /   查看:2966  /  回复:7


如图一个flexgrid:



它的两个属性,可编辑,和总是添加一行新行。
fg.AllowEditing = true;
fg.AllowAddNew = true;

第一列被我替换成 下拉框。

现在的问题是,这个空白行,当我只是点开下拉框时,我并没有选择,表格就又添加了一行空行。
我想要的效果是,当我选择了,才出现新行。

请问这个问题怎么解决?


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

7 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-5-1 00:55:35
沙发
AllowAddNew 为True时,默认第一行实际上就是用来新增行的,因此任何点击都会触发新增一行,
对于你目前的需求,建议可以尝试BeforeAddRow事件,判断第一个单元格的值是否有变化来确定是否调用Cancel来阻止创建

而对于值是否变化,可以尝试用CellChanged事件来判断
回复 使用道具 举报
PasysFish
初级会员   /  发表于:2020-6-8 11:02:14
板凳
Richard.Ma 发表于 2020-5-1 00:55
AllowAddNew 为True时,默认第一行实际上就是用来新增行的,因此任何点击都会触发新增一行,
对于你目前的 ...

你好,目前有这样一个需求。
当触发新增一行时,这个新增行,有一些初始数据。
所以我想问一下,怎么给新增行赋初始数据?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-6-8 11:33:12
地板
使用AfterAddRow事件,给其中需要的单元格加入数据即可

  1.         private void c1FlexGrid1_AfterAddRow(object sender, RowColEventArgs e)
  2.         {
  3.             c1FlexGrid1[e.Row, 0] = 1;
  4.             c1FlexGrid1[e.Row, 1] = 3;
  5.         }
复制代码
回复 使用道具 举报
PasysFish
初级会员   /  发表于:2020-6-8 13:19:36
5#
Richard.Ma 发表于 2020-6-8 11:33
使用AfterAddRow事件,给其中需要的单元格加入数据即可

AfterAddRow在表格初始时不起作用。
就是第一次加载表格,并且设置表格的AllowAddNew = true。
第一次加载时,表格就出现了新行,但并没有走AfterAddRow.

只有当我在点击了一行空行,表格出现新行时,才会触发AddRow事件。

能在初始时触发BeforeAddRow和AfterAddRow吗?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-6-8 13:52:50
6#
不管是AfterAddRow,还是BeforeAddRow,确实都是在手动点击新增行(带*号的行)
时才触发的,这个事件没有办法通过代码来触发

我不太明白你的需求,为什么一定要初始化触发这两个事件,如果是要初始化时添加一行数据的话,通过代码来添加行就行
flex.Rows.Add添加一个空行,然后去设置每个单元格的值
回复 使用道具 举报
PasysFish
初级会员   /  发表于:2020-6-8 14:15:43
7#
Richard.Ma 发表于 2020-6-8 13:52
不管是AfterAddRow,还是BeforeAddRow,确实都是在手动点击新增行(带*号的行)
时才触发的,这个事件没有 ...

嗯,也可以。
我钻牛角尖了。
谢谢解答。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-6-8 14:19:05
8#
不客气了,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部