【发布时间】:2017-01-01 05:20:22
【问题描述】:
如何从 GridView 加载、保存和显示数据到 XML?不是硬盘上的 XML 文件,而是一个临时 XML 变量,用于将其全部保存在数据库中 XML 类型的单个字段中。
【问题讨论】:
如何从 GridView 加载、保存和显示数据到 XML?不是硬盘上的 XML 文件,而是一个临时 XML 变量,用于将其全部保存在数据库中 XML 类型的单个字段中。
【问题讨论】:
gridview 本身没有任何数据 - 因此您无法将任何数据保存到磁盘。
您的 gridview 将绑定到一个数据源 - 一个对象列表、一个 DataTable、任何东西 - 那是数据,并且可以保存到(和从)磁盘加载。
您最简单的选择是将数据 XML 序列化到磁盘 - 或从那里加载。您需要查看XML serialization。
或者查看 DataTable 的 ReadXml 和 WriteXml 方法 - 它们允许您以 XML 格式将 DataTable 保存到磁盘上 - 或者从磁盘上的 XML 文件加载它。
可以这么简单:
DataTable myData = new DataTable();
myData.ReadXml(@"C:\temp\mydatafile.xml");
// do some processing
myData.WriteXml(@"C:\temp\mydatafile.xml", XmlWriteMode.WriteSchema);
更新:
如果要将 XML 存储到字符串中以便将其转储到数据库中,请使用以下命令:
// write DataTable to memory stream as XML
MemoryStream memStm = new MemoryStream();
myData.WriteXml(memStm);
// read memory stream into a string variable
memStm.Position = 0;
string xmlContents = new StreamReader(memStm).ReadToEnd();
然后将您的xmlContents 存储到数据库中。
马克
【讨论】:
为什么要将历史数据存储在数据库中?为什么不保存 QueryString 或用于填充 gridview 的任何数据并相应地重新绑定数据?
例如,如果您的用户导航到 mypage.aspx?id=56&size=large&date=yesterday
您可以在 json 对象 {"Id":"56","size":"large","date":"yesterday"} 中加载这些选项并将其存储在数据库中。然后,您的数据是最新的,大型数据集不会用冗余/过时的数据填满您的数据库表。
查看: http://www.codeplex.com/Json
编辑:如果你不想乱加json,你可以使用任何东西作为分隔符,例如,在单独的行上有键/值对并用管道分隔它们('|')
【讨论】: