C1DataGrid问题
现在我的DataGrid没有数据,属性没有声明,能不能手动添加属性,将对应的属性值填在DataGrid的列中?实现有数据时,动态添加列,没有数据时,不添加数据? 回复 1楼安心海叶的帖子问题已经查收,进一步调查后反馈给你结果。 回复 1楼安心海叶的帖子
你好。
从你的描述来看,你想实现的是业务逻辑方面的功能。
另外不太理解什么是属性没有声明?具体的是DataGrid的什么属性没有声明? 回复 3楼Alice的帖子
感谢回复~要实现的确实是业务逻辑的功能,但是我们不能确定DataGrid能不能实现这样的功能。我们要实现的是:初始化DataGrid时,没有数据,所以DataGrid为空;当我们从外部采集到一个List的数据时,DataGrid的数据源更新,把它放在最后的一列中;如果没有从外部采集到数据,那么DataGrid始终为空;如果采集了多次数据,就依次排列到DataGrid的列中。依照我的理解是DataGrid必须先有属性,这样创建的列才能绑定到这个属性,然后将采集到List数据也绑定到这个属性,更新DataGrid的数据源,但是我不知道能不能实现这个功能? 回复 4楼安心海叶的帖子
谢谢你的描述。
你的业务逻辑,我能找到的基本的思路如下:
将AutoGenerateColumns设置为false,这个时候设置DataSource进行数据绑定就不会自动生成列。
你可以根据你的数据源情况(这里你需要去判断数据源里的数据,并得出结论),当数据源有数据的时候,就给C1DataGrid的Columns添加列,并通过DataGridBoundColumn的Binding属性指定对应数据源的字段。获取到的数据字段都可以依次添加。 回复 5楼Alice的帖子
我不太能理解”通过DataGridBoundColumn的Binding属性指定对应数据源的字段“,意思是数据源中的字段都是事先声明好的吗?如果从外部连续采集了10次或更多次数据,那就得事先声明这些字段了,并且在产生数据的时候赋予对应字段的值吗?那将使DataGrid的绑定功能显得异常笨拙,重复代码行数非常多。因为我们每次采集的数据都是重复性的工作,只是放在了DataGrid的不同的列,能不能模拟数据给予demo解答?非常感谢~ 回复 6楼安心海叶的帖子
DataGrid的数据绑定分为两种:
1.设置数据源,然后AutoGenearateColumns为true,会自动生成列然后进行绑定。
2.设置数据源,但AutoGenerateColumns为false,这个时候不会为相关字段生成列。至于你要绑定到什么字段,生成几列,都是根据需求,使用Column的Bound属性指定数据源里的字段。
这些在我们随机安装示例里都有演示,路径:
\Documents\ComponentOne Samples\WPF\C1.WPF.DataGrid\CS\DataGridSamples
如果你的需求比较特殊,请提供一个模拟你场景的Demo,然后我们再帮你看看是否可以实现。 回复 7楼Alice的帖子
您好!
我已经将demo上传,里面标注了我不知道如何实现的内容,请帮忙~
回复 8楼安心海叶的帖子
谢谢提供的demo,你的问题我们收到了。
测试demo后给你反馈。 回复 9楼Alice的帖子
你好。从你的Demo并未看出你的数据源的采集和动态的变化。
拿你的Demo来看,你是通过GenerateData方法去采集数据的?我的理解,你是不是在SVCParaData中有Id,Name,Unit, Pre,Actual等字段,在运行时候,这些字段是变化的,比如可能会增加一个名为Price的字段,这个时候你期望C1DataGrid能够自动添加这个字段?