有一XML文件约50M,需要绑定在asp.net(C#)中的GridView控件内显示内容,我用dataset绑定xml后再绑定到GridView,成功但显示无结果。
 
以下是我自己的测试代码Default.aspx.cs:
 
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        DataSet ds = new DataSet();
        ds.ReadXml(Server.MapPath("test.xml"));
        if (ds.Tables[0].Rows.Count > 0)
        {
            gv.DataSource = ds.Tables[0].DefaultView;
            gv.DataBind();
        }
        else
        {
            Response.Write("Error!");
        }
    }
}
 
测试结果--》显示无显示"Error!",但也不显示DridView控件!
 
 
 
xml文件格式如下:
 
<?xml version="1.0" encoding="utf-8" ?>
<Products>
<Result>1000</Result>
<Product>
<Item>
<Id>产品编号</Id>
<a1>值1</a1>
<b1>值2</b1>
<c1>值3</c1>
<d1>值4</d1>
</Item>
<Item>
……
</Item>
……
</Product>
</Products>XMLASP.NETC#

解决方案 »

  1.   

    一开始不是这样写的,只是
    ds.ReadXml(Server.MapPath("test.xml"));
    gv.DataSource = ds;不成功就改成现在这样,应该怎样写?自学的,很多地方都不太懂,东拼西凑的,呵呵,请别见笑。
      

  2.   

    你的dataset没有建立字段,那是当然不显示了
      

  3.   


        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(Server.MapPath("abc.xml"));
                XmlNodeList songNode = doc.SelectNodes("/Products/Product/Item");
                DataTable dt = new DataTable();
                if (songNode != null)
                {
                    for (int i = 0; i < songNode.Count; i++)
                    {
                        if (i == 0)
                        {
                            foreach (XmlNode item in songNode[i].ChildNodes)
                            {
                                dt.Columns.Add(item.Name);
                            }
                        }
                        DataRow row = dt.NewRow();
                        foreach (XmlNode item in songNode[i].ChildNodes)
                        {
                            row[item.Name] = item.InnerText;
                        }
                        dt.Rows.Add(row);
                    }
                    GridView1.DataSource = dt;
                    GridView1.DataBind();
                }        }
        }