找回密码
 立即注册

QQ登录

只需一步,快速开始

ljf31

中级会员

31

主题

88

帖子

651

积分

中级会员

积分
651

活字格认证

ljf31
中级会员   /  发表于:2015-6-4 10:10  /   查看:6353  /  回复:5
版主你好,我在C1DataGrid中动态的添加了几列,也没有对列进行数据绑定设置。我是通过程序找到对应的单元格,设定了单元格显示的内容。但我在滑动滚动条的时候,发现单元格的内容不停变化。请问该如何解决?附件是测试代码, 具体情况如下图:

本帖子中包含更多资源

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

x

5 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2015-6-4 14:46:00
沙发
回复 1楼ljf31的帖子

感谢对该问题的反馈。
你的问题我们收到了,测试后给你反馈。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-6-4 15:57:00
板凳
回复 1楼ljf31的帖子

你好。
根据你的示例,目前的行为是合理的。
你在数据绑定的C1DataGrid上添加了3列非绑定的列。这3列在数据源里是没有对应的字段,因此你编辑的值没有办法进行存储,它并没有被分配到任何一个单元格的值中。
为了解决你的问题,提供以下的思路:
你必须给列定义一个暂时的binding对象来使得它可以编辑,然后把编辑的值存储到暂时的变量中。
需要处理的事件有:CommittingEdit 和CommittedEdit,还有BeganEdit 和BeginningEdit。
在committedEdit事件中,可以通过(e.Cell.Presenter.Content as TextBlock).Text 获取到这个文字。
在BeginEdit事件中,可以通过((C1.Silverlight.C1TextBoxBase)(e.EditingElement)).C1Text获取到这个文字。
你可以根据你的业务逻辑进行值的存储。

然后在进入编辑状态以及提交的相关事件中,对输入的值进行处理。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
ljf31
中级会员   /  发表于:2015-6-5 08:00:00
地板
版主你好,首先我后面动态列是不根据数据库中的内容而定的,所以我无法实体中确定定义多少个这样的属性。 在DataGrid中每个单元格应该是一个控件元素,那我给它赋值,它应该能记录的到呀。 难道没有其它的方式解决这个问题吗?
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-6-5 11:57:00
5#
版主你好,首先我后面动态列是不根据数据库中的内容而定的,所以我无法实体中确定定义多少个这样的属性。 在DataGrid中每个单元格应该是一个控件元素,那我给它赋值,它应该能记录的到呀。 难道没有其它的方式解决这个问题吗?
ljf31 发表于 2015-6-5 8:00:00


你好。
对于整个控件你进行了数据绑定,正是由于动态列不是根据数据库中的内容而定的,是你自己添加的,在数据库里没有相应的字段去存储这个值。
在数据绑定模式下,控件和数据源之间是有对应关系的,输入的值会被存储到数据源,相应的数据源的更改也会反映到grid上,这是数据绑定的基础。
但是你在运行时候输入的值在数据库是没有对应字段的,这相当与数据绑定模式下想实现非绑定,并且对非绑定的值进行修改和存储,因此解决方案就是需要你自己写代码去存储你所输入的值。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-7-8 10:08:00
6#
回复 1楼ljf31的帖子

请问你的问题解决了么?
为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢        
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部