C# 在ASP.NET C中将Gridview行转换为列#

C# 在ASP.NET C中将Gridview行转换为列#,c#,sql,asp.net,gridview,transpose,C#,Sql,Asp.net,Gridview,Transpose,我正在使用asp.net c#和SQL。我已经将我的GridView绑定到一个XML文件,数据显示如下图1所示。是否有人可以建议我如何修改代码以获得如图2所示的数据显示? 这是我的密码 protected void RotateandBind() { XmlReader myxmlFile = XmlReader.Create("C:/stgt.xml", new XmlReaderSettings()); DataSet dss = new DataSet();

我正在使用asp.net c#和SQL。我已经将我的
GridView
绑定到一个XML文件,数据显示如下图1所示。是否有人可以建议我如何修改代码以获得如图2所示的数据显示?

这是我的密码

   protected void RotateandBind()
   {

    XmlReader myxmlFile = XmlReader.Create("C:/stgt.xml", new XmlReaderSettings());
    DataSet dss = new DataSet();
    dss.ReadXml(myxmlFile);
    GridView1.DataSource = dss.Tables["Attribute"];
    DataTable dtbefore = GridView1.DataSource as DataTable;
    DataTable dtafter = new DataTable();


    for (int i = 0; i <= dtbefore.Rows.Count; i++)
    {

        dtafter.Columns.Add("");
    }

    for (int k = 0; k < dtbefore.Columns.Count; k++)
    {
        DataRow dr = dtafter.NewRow();

        dr[0] = dtbefore.Columns[k].ColumnName.ToString();
        for (int j = 0; j < dtbefore.Rows.Count; j++)
        {
           dr[j + 1] = dtbefore.Rows[j][k].ToString();
        }
        dtafter.Rows.Add(dr);
    }


  }
受保护的void RotateandBind()
{
XmlReader myxmlFile=XmlReader.Create(“C:/stgt.xml”,新的XmlReaderSettings());
数据集dss=新数据集();
ReadXml(myxmlFile);
GridView1.DataSource=dss.Tables[“属性”];
DataTable dtbefore=GridView1.DataSource作为DataTable;
DataTable dtafter=新DataTable();

对于(int i=0;i这应该适用于您。它获取第一行,将其转换为列标题,然后删除包含列标题的第一行

foreach (DataColumn column in dtafter.Columns)
{
 string cName = dtafter.Rows[0][column.ColumnName].ToString();
if (!table.Columns.Contains(cName) && cName != "")
{
     column.ColumnName = cName;
}

}

dtafter.Rows[0].Delete(); //If you don't need that row any more

是否涉及SQL语言?是的,我将用SQL编写一个存储过程,并在我的Csharp代码中调用它。您尝试实现的任务称为数据透视。您可以看到此链接。希望这将对您有所帮助。