我正在尝试格式化XML数据以在网格上显示。
Page1.aspx的。这将插入存储在xmldatatype中的XML数据:
WorkHistory workhis = js.Deserialize<WorkHistory>(json);
XmlDocument work = (XmlDocument)JsonConvert.DeserializeXmlNode(json, "root");
objBLL.insert_XMLWork(work, Convert.ToInt64(ui.id));
Page2.aspx检索它并显示在网格上:
DataTable FBWorkDt = objBLL.get_FacebookWork(FacebookUserId);
GrdWork.DataSource = FBWorkDt;
GrdWorkPub.DataBind();
get_FacebookWork(select workinfo from Fprofiles where Userid = FacebookUserId)
返回一个DataTable
它以这种格式显示。
WorkInfo
<root><work><employer><id>208571635850052</id><name>Netizen Apps</name></employer></work><id>1076483621</id></root>
如何进行正常显示而不是XML格式?
由于 太阳
答案 0 :(得分:0)
这取决于您返回的DataTable的形状,但假设您希望显示器是这样的:
`ID名称
-------------------- ---------------------
208571635850052网友应用
您可以使用LINQ:
DataTable FBWorkDt = objBLL.get_FacebookWork(FacebookUserId);
var query = from x in FBWorkDt.AsEnumerable()
select new {
id = x.ID,
name = x.Name
};
GrdWork.DataSource = query.ToList();
GrdWorkPub.DataBind();
我没有尝试过代码,因此可能会有轻微的合成变化,但基本上它正在做的是:
如果您可以发布更多信息 - 显示的确切含义,以及返回的DataTable的预期形状(即每行中的列数),我们可以为您提供更好的答案。
<强>更新强> 如果您将XML文档存储在数据存储区中并且正在表中返回,请尝试以下代码:
DataTable FBWorkDt = objBLL.get_FacebookWork(FacebookUserId);
XDocument xDoc = XDocument.Load(FBWorkDt.Rows[0][0].ToString());
var query = from x in xDoc.Descendants("employer")
select new
{
id = (string)x.Element("id"),
name = (string)x.Element("name")
}
GrdWork.DataSource = query.ToList();
GrdWorkPub.DataBind();
与上面相同的基本原理,除了这次你查询XDocument而不是DataTable。