格式化XML数据以在gridview上显示

时间:2011-08-04 00:03:32

标签: asp.net xml

我正在尝试格式化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格式?

由于 太阳

1 个答案:

答案 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(); 

我没有尝试过代码,因此可能会有轻微的合成变化,但基本上它正在做的是:

  1. 使用LINQ获取一个新的匿名类型的集合,每个行具有一个条目,其中包含表中的id和name。您必须使用AsEnumerable()[包含在System.Data.DataSetExtensions中]。
  2. 通过.ToList()将LINQ结果集转换为List,并将其绑定到GridView。
  3. 如果您可以发布更多信息 - 显示的确切含义,以及返回的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。