安心海叶 发表于 2015-11-13 16:20:00

C1DataGrid的Xml保存问题

您好!

我现在在关于DataGrid遇到了同样的问题。




首先在保存C1DataGrid时,如上图所示,会过滤到添加的c1:C1DataGrid.Columns列信息?

其次,我保存为xml后,再次打开,总是报错,显示CurrentCell为NULL,为什么总会出现CurrentCell为null或者CurrentRow为null的问题?


Alice 发表于 2015-11-13 17:31:00

回复 1楼安心海叶的帖子

谢谢您的反馈。
问题已经收到了,和之前的C1Chart的问题感觉类似。
我们测试后给您反馈。

安心海叶 发表于 2015-11-13 17:34:00

回复 2楼Alice的帖子

好的,非常感谢~

KNight 发表于 2015-11-13 18:09:00

回复 3楼安心海叶的帖子

:itwn:这个问题有意思,看了你的两个帖子,都是想把控件设计与xml互相转化,其中用到的XamlWriter.Save方法,但是这个使用是有限制的,可以参考:https://msdn.microsoft.com/zh-cn/library/ms754193(v=vs.110).aspx

观察C1DataGrid里面的属性:
public DataGridColumnCollection Columns
{
        get
        {
                return this.Model.Columns;
        }
}

public DataGridCell CurrentCell
{
        get
        {
                if (this.Model != null)
                {
                        return this.Model.FocusAndEditingManager.CurrentCell;
                }
                return null;
        }
        set
        {
                if (this.Model != null)
                {
                        this.Model.SetCurrentCell(value);
                }
        }
}
必须同时实现get和set方法才能被save保存到xml中,进行序列化和反序列化操作;很明显C1DataGrid里的Current属性是可以序列化和序列化,只可惜最后结果是{assembly:Null},而且反序列化不回来了,网上有人说只能序列化后手动删除该属性,才能反序列化回来;
其次,Columns属性是没法序列化和反序列化的,因为没有实现set属性,即时在Mode里Columns的Set方法也是private,同样不能序列化;

看来您只能自己手动操作序列化和反序列化保存xml了:~

Alice 发表于 2015-11-17 09:41:00

回复 3楼安心海叶的帖子

您可以参考4楼的回复。
如果有什么问题,可以和我们联系。

安心海叶 发表于 2015-11-17 10:05:00

回复 4楼KNight的帖子

请问,我如何手动操作序列化和反序列化保存xml,对于DataGrid,我完全没有头绪...

KNight 发表于 2015-11-17 14:05:00

回复 6楼安心海叶的帖子

:-|这个我就是知其然不知其所以然了,@Alice 问一下Alice吧

安心海叶 发表于 2015-11-17 14:15:00

回复 7楼KNight的帖子

好的,谢谢~

Alice 发表于 2015-11-17 17:49:00

回复 8楼安心海叶的帖子

谢谢反馈。
根据上述来看,这不是C1DataGrid的问题,这是xml序列化的问题。
我们测试后再给您反馈。

Alice 发表于 2015-11-19 09:28:00

回复 8楼安心海叶的帖子

您好。
有关C1DataGrid的序列化问题,对于不支持序列化的属性,您可以参考如下帖子11楼的Demo进行序列化和反序列化。
这个Demo提供了一种思路,您可以采用这种方式,将所有C1控件中不支持序列化的属性,进行序列化和反序列化:
http://gcdn.gcpowertools.com.cn/showtopic-19406.html
页: [1] 2
查看完整版本: C1DataGrid的Xml保存问题