使用 ASP.NET Grid 显示分层 xml 数据
Posted
技术标签:
【中文标题】使用 ASP.NET Grid 显示分层 xml 数据【英文标题】:Show hierarchical xml data using ASP.NET Grid 【发布时间】:2019-12-28 16:24:05 【问题描述】:我有以下 XML 数据。我需要以分层表格格式在 ASP.NET 网页上呈现它们。
XML:
<Developers>
<Region name="UK">
<Region name="England">
<Region name="London">
<Data Date="01-01-2019">
<Value name="DotNet">100</Value>
</Data>
<Data Date="01-01-2020">
<Value name="DotNet">200</Value>
<Value name="Java">300</Value>
</Data>
</Region>
<Region name="Other">
<Data Date="01-01-2019">
<Value name="DotNet">400</Value>
</Data>
<Data Date="01-06-2019">
<Value name="DotNet">500</Value>
</Data>
</Region>
</Region>
<Region name="Scotland">
<Data Date="01-01-2019">
<Value name="DotNet">600</Value>
</Data>
</Region>
</Region>
<Region name="France">
<Data Date="01-06-2020">
<Value name="DotNet">700</Value>
</Data>
</Region>
<Region name="Germany">
<Data Date="01-06-2019">
<Value name="Java">800</Value>
</Data>
</Region>
</Developers>
预期输出:
其中 (-) 是树视图的展开/折叠控件。
是否可以使用 ASP.NET 数据网格来实现这一点?任何代码示例都会非常有用。
【问题讨论】:
XML 示例中的数字与预期输出中的数字有何关系?示例中似乎有德国和 2019 年的数据,但预期输出显示值为 0。 @MartinHonnen - 我已经更新了 XML(对不起,它有一个以前的版本)。该表仅包含 DotNet 开发人员的数据。德国没有 DotNet 开发人员(当然在这个例子中),所以它有 0。此外,这些数字是给定年份的值的总和。示例:UK\England\Other 2019 年的值为 900,即 400 + 500 的总和。 见方案一中的三个链接:codeproject.com/Questions/746712/… 感谢链接,但它们主要用于 winform 应用程序。我必须在 ASP.NET 网络表单中实现这一点。 您可能需要一些第三方库来实现类似于该图像的树视图控件,但您是否还需要帮助将该 xml 转换为可用对象? 【参考方案1】:在asp.net网格视图中显示xml数据。
默认的asp网页
<html>
<head>
<title>Datagrid With XML </title>
<link rel="stylesheet" href="css/ASPNetCookbook.css">
</head>
<body leftmargin="0" margin margin topmargin="0">
<form id="frmDatagrid" method="post" runat="server">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td align="center">
<img src="images/ASPNETCookbookHeading_blue.gif">
</td>
</tr>
<tr>
<td class="dividerLine">
<img src="images/spacer.gif" border="0"></td>
</tr>
</table>
<table align="center" border="0">
<tr>
<td><img src="images/spacer.gif" border="0"></td>
</tr>
<tr>
<td align="center" class="PageHeading">
DataGrid Using Data From XML (VB)</td>
</tr>
<tr>
<td><img src="images/spacer.gif" border="0"></td>
</tr>
<tr>
<td align="center">
<asp:DataGrid
id="dgRegion"
runat="server"
BorderColor="000080"
BorderWidth="2px"
AutoGenerateColumns="False"
>
<HeaderStyle
HorizontalAlign="Center"
ForeColor="#FFFFFF"
BackColor="#000080"
Font-Bold=true
CssClass="TableHeader" />
<ItemStyle
BackColor="#FFFFE0"
cssClass="TableCellNormal" />
<AlternatingItemStyle
BackColor="#FFFFFF"
cssClass="TableCellAlternating" />
<Columns>
<asp:BoundColumn HeaderText="Region" DataField="Region" />
<asp:BoundColumn HeaderText="Data " DataField="Data "
ItemStyle-HorizontalAlign="Center" />
<asp:BoundColumn HeaderText="Value " DataField="Value "
ItemStyle-HorizontalAlign="Center" />
</Columns>
</asp:DataGrid>
</td>
</tr>
</table>
</form>
</body>
</html>
cs代码如下。
using System;
using System.Configuration;
using System.Data;
using System.Data.OleDb;
namespace ASPNetCookbook.CSExamples
public class CH01DataGridWithXMLCS : System.Web.UI.Page
private void Page_Load(object sender, System.EventArgs e)
const String Region_TABLE = "Region";
DataSet dSet = null;
String xmlFilename = null;
if (!Page.IsPostBack)
try
// get fully qualified path to the "Region" xml document located
xmlFilename = Server.MapPath("xml") + "\\Region.xml";
dSet = new DataSet( );
dSet.ReadXml(xmlFilename);
// bind the dataset to the datagrid
dgRegion.DataSource = dSet.Tables[Region_TABLE];
dgRegion.DataBind( );
finally
// cleanup
if (dSet != null)
dSet.Dispose( );
// finally
// Page_Load
【讨论】:
以上是关于使用 ASP.NET Grid 显示分层 xml 数据的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET开发实战——ASP.NET MVC & 分层 代码篇