找回密码
 立即注册

QQ登录

只需一步,快速开始

zongxudong
初级会员   /  发表于:2013-11-18 15:29  /   查看:6067  /  回复:7
我自定义了一个 ConnnectionBase 数据源后. 在Sheet 上可以正常显示我的数据后.  我修改数据为什么 不呢回写到我的数据源上呢?  

ConnectionBase 里面的 SetRecordValue 方法, 或者 Update 方法 都不会调用.  这个应该怎么弄呢

7 个回复

倒序浏览
zongxudong
初级会员   /  发表于:2013-11-18 16:18:00
沙发
补充一下. 感觉ConnectionBase 里面, 只有关于获取数据的方法有用, 其他的都没用
难不成要再抓取事件, 反设置过去?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-11-18 16:57:00
板凳
回复 2楼zongxudong的帖子

当前 ConnectionBase 不支持写回数据源,你可以通过重写以下方法来自定义实现,调用时机可以选择 cellvaluechanged 事件:

  1. public virtual void Insert(int recordIndex, object record)
  2. {
  3. throw new NotSupportedException(Properties.ResourceStrings.DataBindingNotSupport);
  4. }

  5. /// <summary>
  6. /// Removes the specified record.
  7. /// </summary>
  8. /// <param name="recordIndex">The record index.</param>
  9. public virtual void Remove(int recordIndex)
  10. {
  11. throw new NotSupportedException(Properties.ResourceStrings.DataBindingNotSupport);
  12. }

  13. /// <summary>
  14. /// Updates the specified record.
  15. /// </summary>
  16. /// <param name="recordIndex">The record index.</param>
  17. /// <param name="record">The record to be updated.</param>
  18. public virtual void Update(int recordIndex, object record)
  19. {
  20. throw new NotSupportedException(Properties.ResourceStrings.DataBindingNotSupport);
  21. }

  22. /// <summary>
  23. /// Commits the connection change.
  24. /// </summary>
  25. public virtual void Commit()
  26. {
  27. throw new NotSupportedException(Properties.ResourceStrings.DataBindingNotSupport);
  28. }

  29. /// <summary>
  30. /// Cancels the connection.
  31. /// </summary>
  32. public virtual void Cancel()
  33. {
  34. throw new NotSupportedException(Properties.ResourceStrings.DataBindingNotSupport);
  35. }
复制代码
回复 使用道具 举报
zongxudong
初级会员   /  发表于:2013-11-18 17:04:00
地板
我目前总算是看明白了 ConnectionBase ,
Grid 的数据修改, 会调用  ConnectionBase.SetValue 方法. 不过在内部使用了 缓存数据. SetValue也只是将缓存数据进行更新.  不会调用 SetRecordValue 这样的虚方法委派到实现类.   真的很纳闷. 这样的一个虚方法有什么意义.
按照这样来说, Insert, Delete , Commit 等这些操作都需要监听事件来处理. 至少我目前测试过了, 在Worksheet 上调用 AddRows 方法一样不会调用, Insert 方法.  :-|
回复 使用道具 举报
zongxudong
初级会员   /  发表于:2013-11-18 17:11:00
5#
真的郁闷. 这个ConnectionBase 为什么不定义成接口, 很多东西封装的太死了.  不知道这个问题能不能反馈一下.
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-11-18 17:14:00
6#
回复 5楼zongxudong的帖子

不好意思,增加了你的开发工作量。我会把这个问题反馈给产品组。在收到反馈后通知你。
回复 使用道具 举报
zongxudong
初级会员   /  发表于:2013-11-18 17:29:00
7#
非常感谢你的回复. 我只是发发牢骚. 请见谅. 呵呵
通过事件绑定的方式也能满足需求.  只是觉得这样的效率不直接.  而且如果说我自己已经有了数据源,  就希望我能从数据源上对我的数据进行控制.  目前的这个数据源 ConnectionBase 顶多算个 DataProvider 数据提供者
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-11-18 17:54:00
8#
回复 7楼zongxudong的帖子

不客气,这是我们应该做的。

是的,你的建议对我们产品的改进很有意义。和数据源交互是很常见的操作。如果能实这部分功能,将使很多用户受益。是很值得提交的需求。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部