【问题标题】:Filling datatable based on custom XML nodes基于自定义 XML 节点填充数据表
【发布时间】:2018-02-06 14:44:01
【问题描述】:

我需要使用数据表在网格视图中显示我的 xml。 我的 XML 是这样组成的:

Click here to see the XML

现在我以这种方式获取数据:

                XmlDocument doc = new XmlDocument();
            doc.Load(@"path\MyXml.xml"); //Percorso file xml

            DataTable dt = new DataTable();
            foreach (XmlNode xns in doc.SelectSingleNode("Settembre"))
            { 
                    string tagName = xns.Name; 
                    if (!dt.Columns.Contains(tagName))
                    {
                        dt.Columns.Add(tagName); 
                    }

            }

在这部分代码中,我根据“Settembre”的子标签(例如“ven_01”)添加了我的列,这样就可以了。

然后我以这种方式将内容(“Settembre”的子标签的子标签的innerText,例如“ven_01”中的“Mattina_Turno_1”)写入单元格

     DataRow dr = dt.NewRow();
            foreach (XmlNode xns in doc.SelectSingleNode("Settembre"))
            {
                    dr[xns.Name] = xns.InnerText; 
            }
            dt.Rows.Add(dr); 

            GridView1.DataSource = dt;
            GridView1.DataBind();

这也有效,但我想做的是在每一行的第一列第一个单元格中显示由 innerText 的父节点组成的第一列作为行名称(它们的最大值为 3,为了更好地解释是标签 "Mattina_Turno1", "Mattina_Turno_2" 和 "Pomeriggio" , 里面可以是一些 innerText)

这是我一段时间以来一直尝试做的事情。 此外,由于行名只有 3,列名可能超过 3,我想恢复它们,所以,如果可能的话,在列标题中显示行名(所以“Mattina_Turno1”,“Mattina_Turno_2”和“Pomeriggio”),并将“Settembre”子标签命名为行(例如“ven_01”)。

我希望我能让我理解

请不要标记为重复,因为我在网上搜索了很多并没有找到解决方案,所以请不要投票并标记为重复,不是。

【问题讨论】:

    标签: c# asp.net xml gridview datatable


    【解决方案1】:

    我通过这样做找到了解决方案:

                    DataTable dt = new DataTable();
                dt.Columns.Add("Data");
                foreach (XmlNode xns in doc.DocumentElement)
                {
                    if (xns.Name == "Settembre") ///IMPLEMENTARE SELEZIONE AUTOMATICA DEL MESE IMPORTANTE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
    
                        foreach (XmlNode xn in xns)
                        {
                            string tagName = xn.Name;
                            var a = dt.Rows.Add(tagName);
                         //   int index_of_a = dt.Rows.IndexOf(a);
    
                        }
                }
                dt.Columns.Add("Mattina Turno 1");
                dt.Columns.Add("Mattina Turno 2");
                dt.Columns.Add("Pomeriggio");
    
    
                expo_days.DataSource = dt;
                expo_days.DataBind();
    
                foreach (XmlNode xns in doc.DocumentElement)
                {
                    if (xns.Name == "Settembre") ///IMPLEMENTARE SELEZIONE AUTOMATICA DEL MESE IMPORTANTE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
    
                        foreach (XmlNode xn in xns)
                        {
                            string tagName = xn.Name;
                            var a = dt.Rows.Add(tagName);
                            //   int index_of_a = dt.Rows.IndexOf(a);
                            DataRow[] rows = dt.Select("Data = '"+tagName+"'");
    
                            foreach (XmlNode xna in xn)
                            { //sistemare le celle in base alla colonna della gridview
                                if(xna.Name == "Mattina_Turno_1") //here i specify in wich column is the "Mattina_Turno_1" and fill in that cell, and so on
                                expo_days.Rows[dt.Rows.IndexOf(rows[0])].Cells[3].Text = xna.InnerText;
                                if (xna.Name == "Mattina_Turno_2")
                                    expo_days.Rows[dt.Rows.IndexOf(rows[0])].Cells[4].Text = xna.InnerText;
                                if (xna.Name == "Pomeriggio")
                                    expo_days.Rows[dt.Rows.IndexOf(rows[0])].Cells[5].Text = xna.InnerText;
    
                            }
    
    
                        }
                }
    

    【讨论】:

      猜你喜欢
      • 2019-02-16
      • 1970-01-01
      • 2018-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-22
      相关资源
      最近更新 更多