找回密码
 立即注册

QQ登录

只需一步,快速开始

loacher
论坛元老   /  发表于:2012-12-18 10:53  /   查看:8468  /  回复:5
第一,当光标放在NewRow上的时候,用鼠标点击其他控件,比如按钮,这个时候,MultiRow上的光标自动跳到Newrow的上一行
第二,通过其他画面把返回值设置在NewRow上之后,没有自动追加一行

请教,怎么解决?

5 个回复

倒序浏览
loacher
论坛元老   /  发表于:2012-12-18 12:43:00
沙发
补充上面第二个问题
>>第二,通过其他画面把返回值设置在NewRow上之后,没有自动追加一行
光标离开NewRow之后,值被清空了
回复 使用道具 举报
loacher
论坛元老   /  发表于:2012-12-19 09:37:00
板凳
请教,继续请教
回复 使用道具 举报
wedy.wang
初级会员   /  发表于:2012-12-19 10:21:00
地板
》第一,当光标放在NewRow上的时候,用鼠标点击其他控件,比如按钮,这个时候,MultiRow上的光标自动跳到Newrow的上一行
这是微软数据绑定控件的设计规范,这是一个Design。DataGridView也有同样的设计。
》>>第二,通过其他画面把返回值设置在NewRow上之后,没有自动追加一行
光标离开NewRow之后,值被清空了

GcMultiRow在数据绑定模式不允许使用下面的代码GcMultiRow.Rows.Add()/Insert().我建议你在设置画面返回值到最后一行之前,先调用数据源的AddNew方法,添加一个新行,比如“this.categoriesBindingSource.AddNew()”, 然后再将你的画面返回值设置到倒数第二行。
参考下面的代码:
  1. if (this.gcMultiRow1.CurrentCellPosition.RowIndex == this.gcMultiRow1.RowCount - 1)
  2.             {
  3.                 this.gcMultiRow1[this.gcMultiRow1.RowCount - 2, 1].Value = "value";
  4.                 this.categoriesBindingSource.AddNew();
  5.             }
  6.             else
  7.             {
  8.                 this.categoriesBindingSource.AddNew();
  9.                 this.gcMultiRow1[this.gcMultiRow1.RowCount - 2, 1].Value = "Value";
  10.             }
复制代码
回复 使用道具 举报
loacher
论坛元老   /  发表于:2012-12-19 10:52:00
5#
我也是经过试验,用数据源追加一行的办法,效果倒是实现了
只是,方法比较恶心
不知道是我哪里做的不对,数据源追加一行之后,明细会自动增加两行,只好在数据源增加一行后,再删除最后一空行
回复 使用道具 举报
wedy.wang
初级会员   /  发表于:2012-12-19 11:09:00
6#
回复 5楼loacher的帖子

如果在你在数据源增加一行之前,你的CurrentCell被放置到了NewRow上面,那么就会增加两行,这是微软数据绑定控件的一个设计,的确不是很好。可以将上面的代码略做修改:
  1.   if (this.gcMultiRow1.CurrentCellPosition.RowIndex == this.gcMultiRow1.RowCount - 1)
  2.             {
  3.                 EditingActions.CancelRowEdit.Execute(this.gcMultiRow1);
  4.                 this.categoriesBindingSource.AddNew();
  5.                 this.gcMultiRow1[this.gcMultiRow1.RowCount - 2, 1].Value = "value";
  6.             }
  7.             else
  8.             {
  9.                 this.categoriesBindingSource.AddNew();
  10.                 this.gcMultiRow1[this.gcMultiRow1.RowCount - 2, 1].Value = "Value";
  11.             }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部