如何从多 table 数据集加载 ASP.Net 网格
How to load ASP.Net Grid from a multi table Dataset
我是 ASP.Net 的新手,我想在 ASP.Net 网格中阅读以下 XML。
当我将 xml 加载到 DataSet 并使用以下代码时,它只显示 XML.
中的第一个 table
DataSet DS = new DataSet();
DS.ReadXml(Server.MapPath(".\data\demo_portfolio.xml"));
GridView1.DataSource = DS;
GridView1.DataBind();
XML 阅读
<portfolio>
<script>
<name>"HDFC.BSE"</name>
<row>
<PurchasePrice>2433.75</PurchasePrice>
<PurchaseDate>2020-01-01</PurchaseDate>
<PurchaseQty>5</PurchaseQty>
<CommissionPaid>20</CommissionPaid>
<CostofInvestment>12188.75</CostofInvestment>
</row>
<row>
<PurchasePrice>2455.30</PurchasePrice>
<PurchaseDate>2020-01-20</PurchaseDate>
<PurchaseQty>4</PurchaseQty>
<CommissionPaid>30</CommissionPaid>
<CostofInvestment>9851.20</CostofInvestment>
</row>
<row>
<PurchasePrice>1874.90</PurchasePrice>
<PurchaseDate>2020-03-12</PurchaseDate>
<PurchaseQty>6</PurchaseQty>
<CommissionPaid>30</CommissionPaid>
<CostofInvestment>11279.40</CostofInvestment>
</row>
</script>
</portfolio>
您可以使用自定义 xml linq 解析器来填充数据表
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml;
using System.Xml.Linq;
using System.Data;
namespace ConsoleApplication4
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
DataTable dt = new DataTable();
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("PurchasePrice", typeof(decimal));
dt.Columns.Add("PurchaseDate", typeof(DateTime));
dt.Columns.Add("PurchaseQty", typeof(int));
dt.Columns.Add("CommissionPaid", typeof(int));
dt.Columns.Add("CostofInvestment", typeof(decimal));
XDocument doc = XDocument.Load(FILENAME);
foreach (XElement script in doc.Descendants("script"))
{
string name = (string)script.Element("name");
foreach (XElement row in script.Elements("row"))
{
dt.Rows.Add(new object[] {
name,
(decimal)row.Element("PurchasePrice"),
(DateTime)row.Element("PurchaseDate"),
(int)row.Element("PurchaseQty"),
(int)row.Element("CommissionPaid"),
(decimal)row.Element("CostofInvestment")
});
}
}
}
}
}
我是 ASP.Net 的新手,我想在 ASP.Net 网格中阅读以下 XML。 当我将 xml 加载到 DataSet 并使用以下代码时,它只显示 XML.
中的第一个 tableDataSet DS = new DataSet();
DS.ReadXml(Server.MapPath(".\data\demo_portfolio.xml"));
GridView1.DataSource = DS;
GridView1.DataBind();
XML 阅读
<portfolio>
<script>
<name>"HDFC.BSE"</name>
<row>
<PurchasePrice>2433.75</PurchasePrice>
<PurchaseDate>2020-01-01</PurchaseDate>
<PurchaseQty>5</PurchaseQty>
<CommissionPaid>20</CommissionPaid>
<CostofInvestment>12188.75</CostofInvestment>
</row>
<row>
<PurchasePrice>2455.30</PurchasePrice>
<PurchaseDate>2020-01-20</PurchaseDate>
<PurchaseQty>4</PurchaseQty>
<CommissionPaid>30</CommissionPaid>
<CostofInvestment>9851.20</CostofInvestment>
</row>
<row>
<PurchasePrice>1874.90</PurchasePrice>
<PurchaseDate>2020-03-12</PurchaseDate>
<PurchaseQty>6</PurchaseQty>
<CommissionPaid>30</CommissionPaid>
<CostofInvestment>11279.40</CostofInvestment>
</row>
</script>
</portfolio>
您可以使用自定义 xml linq 解析器来填充数据表
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml;
using System.Xml.Linq;
using System.Data;
namespace ConsoleApplication4
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
DataTable dt = new DataTable();
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("PurchasePrice", typeof(decimal));
dt.Columns.Add("PurchaseDate", typeof(DateTime));
dt.Columns.Add("PurchaseQty", typeof(int));
dt.Columns.Add("CommissionPaid", typeof(int));
dt.Columns.Add("CostofInvestment", typeof(decimal));
XDocument doc = XDocument.Load(FILENAME);
foreach (XElement script in doc.Descendants("script"))
{
string name = (string)script.Element("name");
foreach (XElement row in script.Elements("row"))
{
dt.Rows.Add(new object[] {
name,
(decimal)row.Element("PurchasePrice"),
(DateTime)row.Element("PurchaseDate"),
(int)row.Element("PurchaseQty"),
(int)row.Element("CommissionPaid"),
(decimal)row.Element("CostofInvestment")
});
}
}
}
}
}