请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

elwin

中级会员

27

主题

210

帖子

748

积分

中级会员

积分
748

活字格认证

elwin
中级会员   /  发表于:2012-2-13 15:36  /   查看:5580  /  回复:6
请教一下,我想把 FarPoint.Web.Spread.CheckBoxCellType Serialize一下,然后保存到硬盘上,在需要时再Deserialize取出使用。
Serialize的代码如下:
using (System.Xml.XmlTextWriter w = new System.Xml.XmlTextWriter(XmlSavePath(Request["configid"]), Encoding.UTF8))
            {
                FarPoint.Web.Spread.CheckBoxCellType chkbx = new FarPoint.Web.Spread.CheckBoxCellType();
                chkbx.Text = this.tbxName.Text;
                chkbx.TextAlign = (TextAlign)System.Enum.Parse(typeof(TextAlign), this.alignddl.SelectedValue, true);
                chkbx.Serialize(w);
            }

OK,没有问题。
Deserialize的代码如下:
   using (System.IO.Stream
                stream = System.IO.File.Open(loadpath, System.IO.FileMode.Open))
                {
                    FarPoint.Web.Spread.CheckBoxCellType chkbx = new FarPoint.Web.Spread.CheckBoxCellType();
                    //System.Xml.XmlTextReader r=new XmlTextReader (
                    XmlDocument doc = new XmlDocument();

                    XmlTextReader xreader = new XmlTextReader(stream);
                    xreader.WhitespaceHandling = WhitespaceHandling.None;
                  

                    doc.Load(stream);

                   // doc.Load(xreader);

                    XmlNodeReader reader = new XmlNodeReader(doc);
                    chkbx.Deserialize(reader);
                    
                    //加载
                    this.tbxName.Text = chkbx.Text;
                    this.alignddl.SelectedValue = chkbx.TextAlign.ToString();
                }

加载时发现问题,
错误代码如下:

根级别上的数据无效。 行 1,位置 1。

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Xml.XmlException: 根级别上的数据无效。 行 1,位置 1。

源错误:


行 37:                     XmlTextReader xreader = new XmlTextReader(stream);
行 38:                     xreader.WhitespaceHandling = WhitespaceHandling.None;
行 39:                     xreader.MoveToContent();
行 40:
行 41:                    // doc.Load(stream);


请教一下,为什么反序列化时会报错?是否思路上存在问题?

6 个回复

正序浏览
iceman
社区贡献组   /  发表于:2012-2-14 14:56:00
7#

回复 6# elwin 的帖子

好的, 如果有有效的方案我会及时和您沟通。
回复 使用道具 举报
elwin
中级会员   /  发表于:2012-2-14 12:50:00
6#
您好,感谢及时回复。
您下面的两个建议与我们需求还存在差距,
期待您的下次回复,谢谢!
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-2-14 12:32:00
5#

回复 4# elwin 的帖子

elwin 您好,
1.您在 1# 提出的问题已经重现,目前找出原因为使用 Serialize 方法序列化出的 XML 文件不符合 XML 文件标准,所以反序列化失败。该问题存在于 Spread for  ASP.NET 版本,Spread for WinForm 可以正常使用。

2.这个问题我们已经在和产品组沟通,得到进一步结果我们会及时通知您,给您带来不便,很抱歉。

3.这个 Case 应该是想重用 CheckBoxCellType ,
   a.建议重载 CheckboxCellType 单元格类型,在类中设置 TextAlign  、Text 等属性,在全局重用。
   b.还可以通过 NameStyle 类,不过只能保存显示样式,把样式序列化成 XML 文件,重复调用。
回复 使用道具 举报
elwin
中级会员   /  发表于:2012-2-14 10:59:00
地板
版主您好,问题能解决吗?
回复 使用道具 举报
elwin
中级会员   /  发表于:2012-2-13 21:16:00
板凳
呵呵,谢谢。若有表达不清的地方,我们多多沟通。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-2-13 18:59:00
沙发

回复 1# elwin 的帖子

elwin 你好,问题我们已经接收,正在处理中,明天回复~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部