【问题标题】:Show hierarchical xml data using ASP.NET Grid使用 ASP.NET Grid 显示分层 xml 数据
【发布时间】: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 转换为可用对象?

标签: c# asp.net xml gridview datagrid


【解决方案1】:

在asp.net网格视图中显示xml数据。

默认的asp网页

<html>
  <head>
    <title>Datagrid With XML </title>
    <link rel="stylesheet" href="css/ASPNetCookbook.css">
  </head>
  <body leftmargin="0" marginheight="0" marginwidth="0" topmargin="0">
    <form id="frmDatagrid" method="post" runat="server">
      <table width="100%" 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" height="6" border="0"></td>
        </tr>
      </table>
      <table width="90%" align="center" border="0">
        <tr>
          <td><img src="images/spacer.gif" height="10" 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" height="10" border="0"></td>
        </tr>
        <tr>
          <td align="center">
            <asp:DataGrid 
                                id="dgRegion" 
                                runat="server" 
                                BorderColor="000080" 
                                BorderWidth="2px"
                                AutoGenerateColumns="False"
                                width="100%">

                                <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
  }  
}

【讨论】:

    猜你喜欢
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 2015-10-11
    • 2012-12-26
    • 1970-01-01
    相关资源
    最近更新 更多